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
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:
<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
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
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)
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
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
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.
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_1 … MASK_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.
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
Authorizationheader →401 Unauthorizedwith body"Access to the system has been denied. Basic authentication header missing." - Missing required parameters →
400 Bad Requestwith a plain JSON string message, e.g."Eine oder mehrere Branchen sind erforderlich."(noBranches) or"Die Angabe des X-Wertes der Standortkoordinate ist nicht korrekt. …"(missing/invalid coordinates). - Other server-side problems are returned as
200 OKwith an empty result set and a human-readable message in the top-levelPublicReportfield (and a non-zeroStatusCode).
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.