Match
Overview
The Match endpoint allows you to send one or more addresses in a single request and match each of them against the Autoaddress address database. For each address sent, it returns:
Match status – how well the address was matched, from
Matcheddown toNoMatch.Match information – the match level achieved (for example,
Building) and details of how the matched address compares to the input address.Original input address – the submitted address.
Matched address – the standardized address we found.
Additional data – any extra data requested as part of your integration, such as coordinates.
This endpoint is specifically engineered to enhance the precision of address data, facilitating a more automated and streamlined system workflow that requires minimal manual intervention.
How to Use
The response is a JSON array containing one match object for each address in the request, returned in the same order as the addresses were sent. Each match object also includes the input address it relates to, so every result can be tied back to the address that was sent.
The status value tells you how well each address was matched. It is one of six values, described below from the strongest match to the weakest. Your application should use it to decide what happens next.
Matched
The address has been matched to a single, complete address in the Autoaddress database.
Use the returned address object.
The address object will have an id.
May have minor amendments (formatting, casing or standardization of the address lines).
Building
The address has been matched to a building that contains more than one address – for example, an apartment block or a multi-occupancy office building – but the unit, apartment or floor was not supplied, or the one supplied could not be matched.
Use information.subBuilding to see whether the sub-building was missing or could not be matched.
The returned address object identifies the building. Add the unit or apartment number and resend the address to match it to the exact unit.
NonUnique
The input address matches more than one address in the Autoaddress database, so a single address could not be chosen. This is common for rural addresses in Ireland, where several properties can share the same address.
Add the Eircode and resend the address.
Partial
Some elements of the input address were matched, but one or more could not be found – for example, a street name that does not exist in the town given, or a flat number that does not exist in the building.
Use information.matchLevel to see the level the address was matched to.
Any elements that could not be matched are returned in address.unmatched; use information.details to see how each element of the input compares to the matched address.
Review the address before using it, or correct the input and resend it.
Incomplete
The input address does not contain enough information to identify a single address – for example, matching to a street with no building number or name.
Use information.details to identify which elements of the address are missing.
Add the missing element, such as the building number or name, and resend the address.
NoMatch
The address could not be matched to any address in the Autoaddress database.
Check the input address for errors – for example, a misspelt street or town name – and resend it.
Example Implementation Flow
Collect the addresses you want to match – for example, from your database or a file received from a third party.
Send them to the Match endpoint as a JSON array of address objects (limit of 25 addresses per request).
For each object in the response, read the status value.
Where the status is
Matched, use the address object (and any data returned) in place of the original address.For any other status, use the information object to review or correct the address, then resend it.
Best Practices
Provide the country parameter so that the service does not have to infer the country from the IP address of the request.
Use the information provided in the address object when saving an address.
Check information.timeout for each result. A value of
truemeans the service timed out while matching that address, so the result should not be treated as final.
Authentication
The Match API is authenticated using our standard authentication method. You can either use your API key directly, or create a token and pass it in the request header. For details on how to authenticate and create a token, see our Authentication documentation.
Request Structure
The Match API accepts POST requests. The key and country parameters are sent in the URL query string, and the addresses to be matched are sent as a JSON array in the request body with a Content-Type of application/json.
Endpoint
https://api.autoaddress.com/3.0/matchParameters
Parameter | Type | Required | Description |
|---|---|---|---|
key | String | Yes, unless a token is passed in the request header | Your API key. Alternatively, pass a token in the |
country | String | No | Two-character ISO country code of the addresses being sent (e.g., |
Request Body
The body is a JSON array of address objects. The number of addresses accepted in a single call is limited to 25. Each address object can contain the following fields:
Field | Type | Required | Description |
|---|---|---|---|
addressLines | Array | Yes (1+) | One or more lines of the address, as an array of strings. |
city | String | No | The city/town name. |
region | String | No | State, province, or county. |
postcode | String | No | The Eircode, postcode or ZIP code. |
Sample Request
The following request sends two addresses to be matched, authenticating with an API key in the query string:
curl --location 'https://api.autoaddress.com/3.0/match?key=YOUR_API_KEY&country=IE' \
--header 'Content-Type: application/json' \
--data '[
{
"addressLines": [
"18 Dame Street"
],
"city": "Dublin 2",
"region": "Dublin",
"postcode": "D02 XF59"
},
{
"addressLines": [
"36 Dame Street"
],
"city": "Dublin 2",
"region": "Dublin",
"postcode": "D02 EF64"
}
]'If you are using a token instead of your API key, omit the key parameter and pass the token in the request header:
Authorization: Bearer <token>Response Structure
When you call the Match endpoint, the API returns a JSON array containing one match object for each address in the request. Each match object contains details about:
The match status.
Match information showing the match level achieved and how the matched address compares to the input address.
The input address, exactly as it was sent.
The matched address.
Any additional data requested as part of your integration, such as coordinates.
This page breaks down each field and explains its purpose.
Sample Response
In this example, both addresses have been matched at building level and the service returns a status of Matched for each. The data object contains the additional data enabled for the integration, including coordinates.
[
{
"type": "match",
"status": "Matched",
"information": {
"matchLevel": "Building",
"complete": true,
"subBuilding": "AbsentOptional",
"details": {
"organization": "None",
"street": "Unchanged",
"addressLines": "Unchanged",
"subBuildingNumber": "None",
"buildingNumber": "Unchanged",
"city": "Unchanged",
"region": "Unchanged",
"postcode": "Unchanged"
},
"timeout": false
},
"input": {
"lines": [
{
"key": "AddressLine1",
"value": "18 Dame Street"
}
],
"city": {
"value": "Dublin 2"
},
"region": {
"value": "Dublin"
},
"postcode": {
"value": "D02 XF59"
},
"country": {
"language": "en",
"value": "Ireland",
"iso": "IE"
},
"label": [
"18 Dame Street",
"Dublin 2",
"D02 XF59"
]
},
"address": {
"id": "IE1400883651",
"language": "en",
"charset": "Latn",
"variation": "G",
"lines": [
{
"key": "Organization",
"value": ""
},
{
"key": "AddressLine1",
"value": "18 Dame ST"
}
],
"city": {
"value": "Dublin 2"
},
"region": {
"value": "Co. Dublin"
},
"postcode": {
"value": "D02 XF59"
},
"country": {
"language": "en",
"value": "Ireland",
"iso": "IE"
},
"unmatched": [],
"label": [
"18 Dame Street",
"Dublin 2",
"D02 XF59"
]
},
"data": {
"location": {
"latitude": 53.344051,
"longitude": -6.26498,
"crs": "EPSG:4258",
"accuracy": "BUILDING"
},
"gb_identifiers": null,
"gb_location": null,
"ie_admin": {
"smallAreaId_2022": 775,
"smallAreaId_2017": 13133,
"smallAreaId_2015": 6374,
"laId_2022": 29,
"laId_2017": 29,
"laId_2015": 29,
"leaId_2019": 13260425,
"leaId_2018": 13260425,
"dedId_2022": 1831,
"dedId_2017": 268140,
"dedId_2015": 268140,
"countyId": 1001000025,
"gaeltacht": false
},
"ie_building": {
"ecadId": 1400883651,
"buildingTypeId": 3,
"underConstruction": false,
"buildingUse": "C",
"vacant": false
},
"ie_postaladdress": null,
"ie_geographicaddress": null,
"ie_location": {
"ing": {
"easting": 315604.83,
"northing": 234024.11,
"crs": "EPSG:29903"
},
"itm": {
"easting": 715530.52,
"northing": 734050.41,
"crs": "EPSG:2157"
},
"accuracy": 1
},
"ie_geodirectory": {
"addressReference": null,
"id": "B:50061931"
},
"lookup": []
},
"links": []
},
{
"type": "match",
"status": "Matched",
"information": {
"matchLevel": "Building",
"complete": true,
"subBuilding": "AbsentOptional",
"details": {
"organization": "None",
"street": "Unchanged",
"addressLines": "Unchanged",
"subBuildingNumber": "None",
"buildingNumber": "Unchanged",
"city": "Unchanged",
"region": "Unchanged",
"postcode": "Unchanged"
},
"timeout": false
},
"input": {
"lines": [
{
"key": "AddressLine1",
"value": "36 Dame Street"
}
],
"city": {
"value": "Dublin 2"
},
"region": {
"value": "Dublin"
},
"postcode": {
"value": "D02 EF64"
},
"country": {
"language": "en",
"value": "Ireland",
"iso": "IE"
},
"label": [
"36 Dame Street",
"Dublin 2",
"D02 EF64"
]
},
"address": {
"id": "IE1702105452",
"language": "en",
"charset": "Latn",
"variation": "G",
"lines": [
{
"key": "Organization",
"value": ""
},
{
"key": "AddressLine1",
"value": "36 Dame ST"
}
],
"city": {
"value": "Dublin 2"
},
"region": {
"value": "Co. Dublin"
},
"postcode": {
"value": "D02 EF64"
},
"country": {
"language": "en",
"value": "Ireland",
"iso": "IE"
},
"unmatched": [],
"label": [
"36 Dame Street",
"Dublin 2",
"D02 EF64"
]
},
"data": {
"location": {
"latitude": 53.344077,
"longitude": -6.263001,
"crs": "EPSG:4258",
"accuracy": "BUILDING"
},
"gb_identifiers": null,
"gb_location": null,
"ie_admin": {
"smallAreaId_2022": 775,
"smallAreaId_2017": 13133,
"smallAreaId_2015": 6374,
"laId_2022": 29,
"laId_2017": 29,
"laId_2015": 29,
"leaId_2019": 13260425,
"leaId_2018": 13260425,
"dedId_2022": 1831,
"dedId_2017": 268140,
"dedId_2015": 268140,
"countyId": 1001000025,
"gaeltacht": false
},
"ie_building": {
"ecadId": 1401187516,
"buildingTypeId": 3,
"underConstruction": false,
"buildingUse": "C",
"vacant": true
},
"ie_postaladdress": null,
"ie_geographicaddress": null,
"ie_location": {
"ing": {
"easting": 315736.56,
"northing": 234030.18,
"crs": "EPSG:29903"
},
"itm": {
"easting": 715662.22,
"northing": 734056.48,
"crs": "EPSG:2157"
},
"accuracy": 1
},
"ie_geodirectory": {
"addressReference": null,
"id": "B:50645890"
},
"lookup": []
},
"links": []
}
]Top-Level Response Fields
Each object in the response array contains the following fields:
Field | Type | Description |
|---|---|---|
type | String | Always |
status | String | How well the address was matched. One of |
information | Object | Provides details of the match level achieved and how the matched address compares to the input address. |
input | Object | The address details exactly as they were sent to the API. |
address | Object | The matched/standardized address returned by the API. This works the same as the address object in your existing integration. |
data | Object | Additional data such as geolocation, administrative boundaries, and building details. Returned fields are based on the data settings set for your integration in the Account Centre. This works the same as your existing integration. |
links | Array | Related API resource links, if available. |
Status
The status field tells you how well the address was matched. It can return with one of the following:
Status | Description |
|---|---|
Matched | The address was matched to a single, complete address in the Autoaddress database. The address object contains the matched address and will have an id. |
Building | The address was matched to a building that contains more than one address, but the unit or apartment was not supplied or could not be matched. |
NonUnique | The input address matches more than one address, so a single address could not be chosen. |
Partial | Some elements of the input address were matched, but one or more could not be found. The unmatched elements are returned in address.unmatched. |
Incomplete | The input address does not contain enough information to identify a single address. |
NoMatch | The address could not be matched to any address in the Autoaddress database. |
Information
Detailed information on the quality of the match for the address object.
Field | Type | Description |
|---|---|---|
matchLevel | String | The granularity of the match (e.g., |
complete | Boolean | Indicates |
subBuilding | String | Information about sub-building details (for example, an apartment or unit). |
details | Object | Indicates, for each element of the address, how the matched address compares to the input – for example, whether the element was changed, added, removed or left unchanged. See details below. |
timeout | Boolean | Indicates |
Details
The details object contains an entry for each element of the address, showing how the matched address compares to the input address.
Field | Description |
|---|---|
organization | Organization or business name. |
street | Street name. |
addressLines | The address lines as a whole. |
subBuildingNumber | Sub-building number, such as an apartment or unit number. |
buildingNumber | Building number. |
city | City or town. |
region | State, county, or province. |
postcode | Eircode, postcode or ZIP code. |
Each element has one of the following values:
Value | Description |
|---|---|
None | The element is not present in either the input address or the matched address. |
Changed | The element was present in the input address and was changed to match to the matched address. |
Unchanged | The element in the input address matches the matched address and was not changed. |
Added | The element was not present in the input address and has been added from the matched address – for example, a missing postcode. |
Removed | The element was present in the input address but is not part of the matched address and has been removed. |
Ignored | The element contained minor errors, such as a spelling mistake, which were ignored when matching. |
Unmatched | The element was present in the input address but could not be matched to the matched address – for example, a flat number that does not exist in the building. |
Input
Represents exactly what was sent to the API. The country object reflects the country used for the match – either the country parameter or, if it was not provided, the country inferred from the IP address of the request.
Field | Type | Description |
|---|---|---|
lines | Array | Key-value pairs of each address line. |
city | Object | Contains the city/town value. |
region | Object | Contains the state, county, or province. |
postcode | Object | Contains the Eircode, postcode or ZIP code. |
country | Object | Contains the country value, language, and ISO code. |
label | Array | Full address formatted as an array of strings. |
Address
The standardized, matched address. The lines, city, region, postcode and country fields are returned as per the settings in My Form in the Account Centre, so the address object works the same as in your existing integration.
Field | Type | Description |
|---|---|---|
id | String | Unique ID for the address. |
language | String | Language code of the address. |
charset | String | Character set used. |
variation | String | Address variation indicator. |
lines | Array | Key-value pairs of each address line. |
city | Object | City/town value. |
region | Object | State, county, or province. |
postcode | Object | Contains the Eircode, postcode or ZIP code. |
country | Object | Country value, language, and ISO code. |
unmatched | Array | Any elements of the input address that could not be matched to the returned address. Empty when the address was fully matched. |
label | Array | Full address formatted as an array of strings. |
Data
Contains additional location, administrative, building, and address reference data. The fields returned depend on the Return Data settings for your integration in the Account Centre and work the same as in your existing integration. See Return Data Settings for a full details.
