core

Return 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.

post/v1/enrich

Request

  • Base URL
    https://api.voygr.tech
  • URL
    https://api.voygr.tech/v1/enrich
  • Auth
    API key in header X-API-Key

Request body

idstring nullable

Client-provided identifier

poi_namestring nullable

Place name (flat shape)

streetstring nullable

Street address

citystring nullable

City

regionstring nullable

State/province

postcodestring nullable

Postal/ZIP code

countrystring nullable

2-letter ISO country code (e.g. US) locating the place.

addressstring nullable

Unstructured address string. May also be sent as freeform_address.

latitudenumber nullable

Latitude in decimal degrees (WGS84).

longitudenumber nullable

Longitude (WGS84)

registered_addressstring nullable

The place's registered (legal) address, if you hold one. address remains the trading address.

include_summaryboolean

Flat shape only: also return a short factual place_summary. Default false. Does not change billing.

response_format'attributes' | 'cell'

Flat shape only: 'attributes' (default, EnrichedAttribute) or 'cell' (the unified ResultCell shape).

validate_existenceboolean

Also validate whether each place exists, returned as an 'existence' attribute.

verify_nameboolean

Verify the business name before researching, and research every attribute against the verified name. Each row returns identity.name. Flat 1 credit per place; shares one lookup with verify_address, so the two together still cost 1.

verify_identityboolean

Deprecated: use verify_name and verify_address. Equivalent to both and billed the same. It also rewrites the address research runs against to the same premises in full, never to different premises.

verify_addressboolean

Check the trading address after research: the one you supplied, else the one we researched. It is never replaced. Implied by the deprecated verify_identity. Costs a flat credit per place, shared with verify_name.

verify_registered_addressboolean

Check the registered address itself, not the business: the one you supplied, else the one we researched. Costs a flat credit per place, independent of the other checks.

estimate_onlyboolean

Dry-run: do not run and do not charge; return meta.estimated_credits.

sampleinteger nullable

List shape only: process and bill only the first N places.

max_creditsinteger nullable

Per-request credit ceiling; rejected with 402 before running if exceeded.

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

OR

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 value VALIDATION_ERROR was removed for the status

    • warning

      added the new FIELD_REJECTED enum value to the response property for the response status

    • warning

      added the new VALIDATION_ERROR enum value to the response 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

    • 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