Enrich a place
Changed onReturn requested attributes for one place or a list of places. Standard attributes (opening_hours, phone, website, facebook, instagram, tiktok, x, email, existence, open_closed) cost one credit per place however many you request. Any other attribute name is a research field, charged per place per field. A request may mix both and pays for each. Send poi_name for one place and get the flat response; send pois for a list and get a rows-by-attributes matrix. include_summary=true also returns a short factual place_summary. Requires a key with the enrich or deep_research entitlement; either one may request any attribute, standard or custom. See Research custom attributes for custom attributes.
Verifying the name and address you sent
Three independent checks cover records that are close but not exact (an abbreviation, an initialism, a store number or a stale spelling):
- verify_name settles the business's name before researching anything else, and every attribute you asked for is then researched against the verified name. Each row carries identity.name.
- verify_address checks the trading address after research and never replaces it. Each row carries address_checks.address, whose verdict is confirmed_at_address, not_found_at_address, found_elsewhere (with the found_address) or not_checked when there was no address to check.
- verify_registered_address checks the registered office. Each row carries address_checks.registered_address.
identity.name gives the value we settled on, a verdict, and your original. The verdict is confirmed (yours was already right), corrected (we replaced it) or unresolved (we could not establish it, so your value comes back untouched). value is always what the rest of the row was researched against, so branch on the verdict rather than comparing strings.
Formatting is not a correction: punctuation, casing, "and" vs "&" and a dropped or added Inc/Ltd/LLC all come back confirmed with your own string.
verify_name and verify_address share one lookup, so either or both cost a flat 1 extra credit per row, however many attributes you requested; verify_registered_address costs 1 more. Each can be overridden per place.
verify_identity is deprecated. It means verify_name plus verify_address and costs the same 1. It also rewrites the address research runs against to the same premises written in full and returns identity.address. Use the separate flags in new integrations, so a place can decline either check on its own.
These checks are not postal validation: a confirmed address matches what the business publishes about itself. They make no claim about whether the business is still open.
Owner discovery (owners, owner_org)
owners is the individual owner, co-owners or franchisee, as one value: a list of people with a name and a role. Add include (phone, email, linkedin) to look up each owner's direct contacts, returned in the same objects. owner_org is the operating company when no individual owner exists. The two are mutually exclusive per place: when one is established, the other abstains, and "no individual owner" is a legitimate answer. key_people takes the same shape with title in place of role.
owners and key_people carry no confidence score. An abstention is a normal result, not a claim that no owner exists. owners and key_people cost 1 credit for the names, 1 for the roles or titles and 1 per included contact; owner_org is billed like any other field. See Owners and key people.
Request
- Base URLhttps://api.voygr.tech
- URLhttps://api.voygr.tech/v1/enrich
- AuthAPI key in header X-API-Key
Request body
Example request
{
"id": "bakery-001",
"poi_name": "Example Bakery",
"address": "123 Example Street",
"country": "US",
"latitude": 37.7749,
"longitude": -122.4194,
"attributes": [
"opening_hours",
"phone",
"website"
]
}Response
Successful Response
Example response
{
"success": true,
"id": "poi-12345",
"attributes": {
"opening_hours": {
"value": {
"days": {
"monday": "closed",
"tuesday": [
{
"open": "11:30",
"close": "22:00"
}
],
"wednesday": [
{
"open": "11:30",
"close": "22:00"
}
],
"thursday": [
{
"open": "11:30",
"close": "22:00"
}
],
"friday": [
{
"open": "11:30",
"close": "23:00"
}
],
"saturday": [
{
"open": "11:30",
"close": "23:00"
}
],
"sunday": [
{
"open": "11:00",
"close": "22:00"
}
]
}
},
"confidence": "high"
},
"phone": {
"value": {
"number": "+14155551234"
},
"confidence": "medium"
},
"website": {
"value": {
"url": "https://www.zunicafe.com"
},
"confidence": "high"
},
"facebook": {
"value": {
"url": "https://www.facebook.com/zunicafe",
"handle": "zunicafe"
},
"confidence": "high"
},
"email": {
"value": {
"email": "info@zunicafe.com"
},
"confidence": "medium"
}
},
"status": {
"existence_confidence": 0.98
},
"place_summary": "A Californian restaurant on Market Street serving a seasonal menu, open since 1979.",
"enrichment_timestamp": "2026-06-29T12:34:56Z",
"request_id": "ad33009a-fdfe-4e25-9650-4a49099c3d4a",
"operational_status": {
"status": "open",
"closure_confidence": 0.02,
"closure_reason": null
}
}Changes
- breaking
the
response property const valueVALIDATION_ERRORwas removed for the status - warning
added the new
FIELD_REJECTEDenum value to theresponse property for the response status - warning
added the new
VALIDATION_ERRORenum value to theresponse property for the response status - info
added the non-success response with the status
- info
added the non-success response with the status
- info
added the non-success response with the status
- info
added the optional property
to the response with the status
- breaking
- info
added the optional property
/////to the response with the status - info
added the optional property
/////to the response with the status - info
added the optional property
//////to the response with the status
- info