Match

Edited

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 Matched down to NoMatch.

  • 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

  1. Collect the addresses you want to match – for example, from your database or a file received from a third party.

  2. Send them to the Match endpoint as a JSON array of address objects (limit of 25 addresses per request).

  3. For each object in the response, read the status value.

  4. Where the status is Matched, use the address object (and any data returned) in place of the original address.

  5. 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 true means 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/match

Parameters

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 Authorization header – see Authentication.

country

String

No

Two-character ISO country code of the addresses being sent (e.g., IE). If not provided, the country is inferred from the IP address of the request.

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 "match" for this endpoint. Identifies the operation performed.

status

String

How well the address was matched. One of Matched, Building, NonUnique, Partial, Incomplete or NoMatch – see status below.

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., "Building", "Street", "Locality").

complete

Boolean

Indicates true if the address is considered complete.

subBuilding

String

Information about sub-building details (for example, an apartment or unit). "AbsentOptional" indicates that no sub-building was supplied and none is required for the matched address; "None" if not applicable.

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 true if the service timed out while attempting to match this address.

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.