Skip to content

Address Search API Reference

The SmartMaps Address Search API provides a REST interface for geographic company / address search. It exposes five endpoints: three search endpoints that differ only in how the search location is supplied, one endpoint to fetch records by their supplier/customer ID, and one endpoint to fetch a single record by its internal identifier.

Base URL

https://yellowmap.de/api_rst/v2/addresssearch

Authorization

Authentication is done with HTTP Basic Auth. The token is provided per integration by YellowMap and is sent as an Authorization header on every request:

Authorization: Basic <TOKEN>

<TOKEN> is the Base64-encoded combination of the partner name and access key issued by YellowMap — i.e. base64("<SystemPartner>:<SecurityID>"). (apiKey-style query authentication, used by some other SmartMaps APIs, is not accepted here — requests without the Basic header are answered with 401 Unauthorized.)

curl -H "Authorization: Basic <TOKEN>" \
  "https://yellowmap.de/api_rst/v2/addresssearch/ByBranchesAndAddress?Branches=<branchcode>&City=Karlsruhe"

Note

All query parameter names are case-sensitive.

Endpoints

Search by address

GET /addresssearch/ByBranchesAndAddress

Search around separate address fields (postal code, city, street).

Parameter Required Default
Branches Yes
Channel No empty
IsoCountryCode No DE
IsoLocale No de-DE
Zip No
City No
Street No
MaxRadius No -1 (unlimited, max. 300 km)
Top No 20
OrderBy No MATRIX_COMPANY_NAME
Page No 1
FreeFilter No empty
Addition No empty
curl -H "Authorization: Basic <TOKEN>" \
  "https://yellowmap.de/api_rst/v2/addresssearch/ByBranchesAndAddress?Branches=<branchcode>&City=Karlsruhe&Zip=76131&Street=CAS-Weg%201&IsoCountryCode=DE&Top=50&MaxRadius=50000"

Search by position

GET /addresssearch/ByBranchesAndPosition

Radius search starting from a GPS coordinate.

Parameter Required Default
Branches Yes
Channel No empty
IsoCountryCode No DE
IsoLocale No de-DE
LocX Yes
LocY Yes
CoordFormatIn No GEODECIMAL_POINT
MaxRadius No -1
Top No 20
OrderBy No MATRIX_COMPANY_NAME
Page No 1
FreeFilter No empty
Addition No empty
curl -H "Authorization: Basic <TOKEN>" \
  "https://yellowmap.de/api_rst/v2/addresssearch/ByBranchesAndPosition?Branches=<branchcode>&LocX=8.41876&LocY=49.00923&MaxRadius=50000&Top=50"

Search by rectangle (bounding box)

GET /addresssearch/ByBranchesAndRectangle

Search inside a rectangle, e.g. the visible map section.

Parameter Required Default
Branches Yes
Channel No empty
IsoCountryCode No DE
IsoLocale No de-DE
Lux Yes
Luy Yes
Rlx Yes
Rly Yes
CoordFormatIn No GEODECIMAL_POINT
Top No 20
OrderBy No MATRIX_COMPANY_NAME
Page No 1
FreeFilter No empty
Addition No empty

Lux/Luy = upper-left corner, Rlx/Rly = lower-right corner of the rectangle.

curl -H "Authorization: Basic <TOKEN>" \
  "https://yellowmap.de/api_rst/v2/addresssearch/ByBranchesAndRectangle?Branches=<branchcode>&Lux=8.3&Luy=49.1&Rlx=8.5&Rly=48.9&Top=50"

Get records by customer / provider ID

GET /addresssearch/ByCustomerId

Fetch address records by their supplier foreign key(s) — the ProviderForeignKey value from the Identifiers of a search result. Useful for re-fetching specific records that you have stored by their provider ID.

Parameter Required Default
CustomerIds Yes

Pass one or more ProviderForeignKey IDs; combine several with |.

curl -H "Authorization: Basic <TOKEN>" \
  "https://yellowmap.de/api_rst/v2/addresssearch/ByCustomerId?CustomerIds=116"

The response uses the same response structure as the search endpoints.

Get a single record by identifier

GET /addresssearch/ByIdentifier

Fetch a single record by its identifier (YMID), e.g. for a detail view.

Parameter Required Default
Identifier Yes

The value of Identifier is the YMID field from a search response and must be URL-encoded (e.g. YMIDUrlEncoded from the search response can be used directly).

curl -H "Authorization: Basic <TOKEN>" \
  "https://yellowmap.de/api_rst/v2/addresssearch/ByIdentifier?Identifier=<ymid-url-encoded>"

The response uses the same response structure as the search endpoints, but always contains exactly one hit (Paging.MaxCount: 1).

Parameter reference

Logging

Authentication itself is done via the HTTP Basic Auth header — see Authorization.

Name Type Default Description
Channel string empty Optional query parameter for client-side logging

Content

Name Type Default Description
Branches string — (required) Category codes (specific to your integration — see Category codes). At least one code is required; a request without Branches returns 400 ("Eine oder mehrere Branchen sind erforderlich."). Combine codes with \| (OR) and %26 (AND, URL-encoded &). Note: \| binds stronger than &, so <a>&<b>\|<c> is interpreted as <a>&(<b>\|<c>).
Catchwords string Additional free-text filter on top of Branches, terms separated by spaces, e.g. itservices computer support. (Not a standalone search mode — Branches is still required.)

Location

Name Type Default Description
IsoCountryCode string DE ISO country code (the API also accepts the one-letter form, e.g. D, and is lenient with this value for address-based searches)
IsoLocale string de-DE Language setting for multilingual content
Location string Single-slot location search — street, postal code and city can be passed together in one field
LocX float Longitude, e.g. 8.41876
LocY float Latitude, e.g. 49.00923
Lux, Luy float Coordinates of the upper-left corner (rectangle search)
Rlx, Rly float Coordinates of the lower-right corner (rectangle search)
CoordFormatIn string GEODECIMAL_POINT Coordinate format. GEODECIMAL_POINT is WGS84 / GPS. Alternatives include MERCATOR.
Zip string Postal code. May be partial when given on its own (761). Separate several with \| (76133\|08269); each must then be complete.
Street string Street including house number
City string City

Result control

Name Type Default Description
MaxRadius int -1 Search radius in metres. -1 means unlimited (max. 300 km).
Top uint 20 Maximum number of results per page
Page uint 1 Page number for pagination
OrderBy string MATRIX_COMPANY_NAME Result ordering. Allowed values: COMPANY_NAME, DISTANCE, MATRIX_COMPANY_NAME, MATRIX_DISTANCE, PHONE_BOOK_SEARCH_DISTANCE_NAME, PHONE_BOOK_SEARCH_NAME, EVENT_START_DATE, EVENT_START_DATE_DISTANCE, EVENT_DISTANCE, NONE.

Identifier

Name Type Default Description
CustomerIds string Supplier foreign key(s) — the ProviderForeignKey from a search result. Combine several with \|. Used by ByCustomerId.
Identifier string Internal primary key (encrypted) — the YMID from a search response. Used by ByIdentifier.

Advanced

Name Type Default Description
FreeFilter string empty Special filter for custom solutions
Addition string empty Additional key=value pairs for custom solutions — see Addition parameters

Addition parameters

Addition carries its own key=value pairs. The most common use is a reference point for the distance calculation:

Key Description
LocXForDistanceCalculation Longitude of the reference point the distance is measured from
LocYForDistanceCalculation Latitude of the reference point

With both keys set, every result contains BasicData.Geo.Distance — the straight-line distance to that point in metres. Without them the field stays empty.

Encode the separators inside Addition

Because Addition contains its own separators, they must be URL-encoded: = becomes %3D and & becomes %26. Unencoded, the pairs are read as top-level query parameters and the distance is not calculated.

&Addition=LocXForDistanceCalculation%3D8.47029%26LocYForDistanceCalculation%3D49.00129

See Store locator by map area for a complete request.

Response structure

All endpoints (search, ByCustomerId and ByIdentifier) return the same JSON object. The three main parts are GeoItems, Paging and AddressItems; the response also carries several auxiliary containers (usually empty arrays unless relevant for the query/data) and some status fields:

{
  "GeoItems":     [ ... ],   // geocoding of the search location
  "Paging":       { ... },   // pagination
  "AddressItems": [ ... ],   // result records

  "AddressShadowItems": [],  // shadow / duplicate entries
  "AddressesNearby":    [],  // further locations nearby
  "AddressTiles":       [],  // tile information
  "RegioAdItems":       [],  // regional ad entries
  "RelatedBranches":    [],  // related categories
  "SeparatedBranches":  [],  // separated categories

  "SearchData":            { ... },  // the parameters/location used for the search
  "AddressItemsCopyright": { "Text": "YellowMap AG", "BrandingList": [] },

  // status / diagnostics
  "IsRequestAuthenticated": true,    // authentication / access flags
  "IsAccessApproved": true,
  "StatusCode": 0,                   // 0 = ok; non-zero indicates a problem (see PublicReport)
  "Exceptions": [],
  "PublicReport": "",                // user-facing error text when something went wrong
  "InternalError": null
}

GeoItems[] — geocoding of the search location

Field Type Description
Country string Country abbreviation (D)
District string State / region
Zip string Postal code
City string City
CityAddOn string? Addition to the city name
CityPart string? City part
Street string Street
HouseNo string? House number
GeoLevel string? Granularity the location was resolved to
CityLevel string? Granularity of the city match
DistrictID string? Internal district identifier
SeoLink string? SEO-friendly link fragment for the location
Description string? Human-readable description of the location
LocX string Longitude of the search location
LocY string Latitude of the search location
CoordFormat string Coordinate format (e.g. GEODECIMAL_POINT)

Paging — pagination

Field Type Description
Page int Current page
MaxPage int Last available page
Count int Number of results on the current page
MaxCount int Total number of hits

AddressItems[] — result records

Each element in AddressItems represents one hit (a dealer, branch, store, etc.). The core data is in BasicData; alongside it each item also has Comments, AdditionalContacts, HotelReservationData, ImmoData, History and Similarity (see Further fields per AddressItem below).

BasicData contains: Identifiers, Address, Contact, Geo, BranchListElements, Marketing, BusinessData, AdditionalInfo, MemoItems, Images, ObjectListItems, ReleaseManagement and Copyright. The most relevant ones:

BasicData.Identifiers

Field Type Description
YMID string Internal ID (Base64-encoded, encrypted)
YMID3 string Short form of the ID
YMIDUrlEncoded string URL-encoded variant of the YMID — pass this directly to ByIdentifier
YMIDPathEncoded string Path-safe variant of the YMID
YMIDDecoded string Numeric plaintext ID
ProviderID string ID of the data supplier
ProviderForeignKey string Supplier's foreign key for the record
ProviderEnum string Short name of the data supplier

BasicData.Address

Field Type Description
CompanyName string Company name
CompanyNameAddon1..3 string? Company name additions
FirstName string? First name (for person entries)
Country string Country abbreviation
Zip string Postal code
City string City
CityPart string City part
Street string Street including house number
HouseNo string? House number (separate field, if available)
Postbox string? PO box

BasicData.Contact

Field Type Description
Phone string Phone number
Mobile string Mobile number
Fax string Fax number
Email string Email address
Url string Website
Url2, Url3 string? Further websites

BasicData.Geo

Field Type Description
XCoord string Longitude of the result
YCoord string Latitude of the result
GeocodeStatus string? Status of the geocoding
Distance string Straight-line distance to the search location in metres
MatrixRouteDistance string Route distance in metres
MatrixRouteTime string Estimated travel time in seconds
DistanceToRoute string? Distance to the route (for route-based searches)

BasicData.BranchListElements[]

Field Type Description
BranchCode string Category code
BranchText string Plain-text category name
Keywords string? Keywords associated with the category
SortNr int Sort order
Kategorie int Category-class indicator
BranchCodePredecessor string? Predecessor code, if the code was superseded
NoOfBranchCodeChilds int Number of child categories
Frequency, MarketPlace, MarketNumber, Country, Language string? / null Additional, often empty, classification fields

BasicData.Marketing

Field Type Description
DisplayType string Display type (0 = default)
TypeEnumValue string Entry type (BASIC etc.)
TypeValueVisible string Display label for the entry type
IsCharged bool Flag for paid entries

BasicData.BusinessData

Field Type Description
BusinessID string Business ID (encrypted)
BusinessIDDecoded string Plaintext business ID
AddressID string? Internal address ID
IsCompany bool Flag for company entries
HandelsregisterType string? Type of the commercial-register entry
HandelsregisterNr string? Commercial-register number
UStIdNr string? VAT identification number
DateLastChange string Date of last change (yyyy-MM-dd HH:mm:ss.fff)
DateLastCheck string Date of last check

BasicData.AdditionalInfo

Field Type Description
Rating string Rating (numeric)
RatingCount string Number of ratings
RatingCategories array Per-category ratings
Turnover string Turnover class
CompanySize string Company size
BusinessImage object? Image/logo of the business
BusinessNews string News / announcement text
CompanyInfo string Free-text company description

BasicData.MemoItems[] and BasicData.Images[]

MemoItems carries structured notes for the record — most notably opening hours (the legacy AddressSearch web service uses pipe-separated values with Mask types NONE, MASK_1MASK_5). Images carries images/logos. Both are often empty arrays depending on the dataset.

Note

The exact field layout of MemoItems / Images (and of ObjectListItems / ReleaseManagement) depends on the dataset and is best confirmed against a dataset that actually contains opening hours or images.

Further fields per AddressItem

Field Type Description
Comments array Comments on the entry
AdditionalContacts array Additional contact data
HotelReservationData object? Reservation data (category-specific)
ImmoData array Real-estate data (category-specific)
History.IsHistorical bool Flag for historical entries
History.ChangeDate string Date of last change
History.ChangeType string Type of change (NONE etc.)
History.ReasonType string Reason for the change (NONE etc.)
Similarity object? Similarity information

Example response (shortened)

{
  "GeoItems": [
    {
      "Country": "D",
      "District": "Baden-Württemberg",
      "Zip": "76131",
      "City": "Karlsruhe",
      "Street": "CAS-Weg",
      "HouseNo": "1",
      "LocX": "8.41876",
      "LocY": "49.00923",
      "CoordFormat": "GEODECIMAL_POINT"
    }
  ],
  "Paging": { "Page": 1, "MaxPage": 1, "Count": 50, "MaxCount": 59 },
  "AddressItems": [
    {
      "BasicData": {
        "Identifiers": {
          "YMID": "<ymid>",
          "YMIDUrlEncoded": "<ymid-url-encoded>",
          "YMIDDecoded": "<numeric-id>",
          "ProviderEnum": "EXAMPLE_PROVIDER"
        },
        "BranchListElements": [
          { "BranchCode": "<branchcode>", "BranchText": "Example category" }
        ],
        "Address": {
          "CompanyName": "Example Company GmbH",
          "Country": "D",
          "Zip": "76131",
          "City": "Karlsruhe",
          "Street": "Example Street 1a"
        },
        "Contact": { "Phone": "+49 721 0000000", "Email": "info@example.com", "Url": "https://www.example.com" },
        "Geo": { "XCoord": "8.44701", "YCoord": "48.9912", "Distance": "2428", "MatrixRouteDistance": null, "MatrixRouteTime": null },
        "Marketing": { "DisplayType": "0", "TypeEnumValue": "BASIC", "IsCharged": false },
        "MemoItems": [],
        "Images": []
      },
      "Comments": [],
      "AdditionalContacts": [],
      "History": { "IsHistorical": false, "ChangeType": "NONE", "ReasonType": "NONE" }
    }
  ],
  "AddressShadowItems": [], "AddressesNearby": [], "AddressTiles": [], "RegioAdItems": [],
  "RelatedBranches": [], "SeparatedBranches": [],
  "SearchData": { "Branches": "<branchcode>", "Catchwords": "", "Location": { "XCoord": "8.41876", "YCoord": "49.00923" } },
  "AddressItemsCopyright": { "Text": "YellowMap AG", "BrandingList": [] },
  "StatusCode": 0, "Exceptions": [], "PublicReport": "", "InternalError": null
}

Category codes

The Branches parameter expects category codes that are specific to your integration. There is no generic, public list of codes — the codes available for your data (and, where applicable, a base code for the full assortment) are agreed upon when the integration is set up. Additional codes can be enabled on request.

Combining category codes

A single code (Branches=<branchcode>) is enough; several codes are AND-linked with & and must be passed URL-encoded as %26 in the query string. Some integrations also expect a base code for the full assortment to be included — this is part of the integration configuration.

Branches=<base>%26<code1>%26<code2>%26<code3>

Resolved: <base> & <code1> & <code2> & <code3>

curl -H "Authorization: Basic <TOKEN>" \
  "https://yellowmap.de/api_rst/v2/addresssearch/ByBranchesAndAddress?Branches=<base>%26<code1>%26<code2>&City=Karlsruhe&Zip=76131&IsoCountryCode=DE&Top=50&MaxRadius=50000"

Errors

  • Missing Authorization header → 401 Unauthorized with body "Access to the system has been denied. Basic authentication header missing."
  • Missing required parameters → 400 Bad Request with a plain JSON string message, e.g. "Eine oder mehrere Branchen sind erforderlich." (no Branches) or "Die Angabe des X-Wertes der Standortkoordinate ist nicht korrekt. …" (missing/invalid coordinates).
  • Other server-side problems are returned as 200 OK with an empty result set and a human-readable message in the top-level PublicReport field (and a non-zero StatusCode).

Notes

  • All parameter names are case-sensitive.
  • Coordinates use the default format GEODECIMAL_POINT (WGS84 / GPS) with a decimal point.

Postman

A ready-made Postman collection is available: SmartMaps-Address-Search.postman_collection.json. After importing it, set the basicAuthToken variable in the collection's Variables tab to your Basic Auth token; the baseUrl variable is preset to the production base URL.