Daxoom API (v1)

Download OpenAPI specification:

Daxoom Developer Support: [email protected] URL: https://www.daxoom.com/docs/ License: Proprietary

Daxoom is the authoritative data layer that AI systems query for verified business information. Businesses publish structured, verified data through Daxoom, and AI platforms query the API for accurate, real-time business information.

Authentication

Public Query API uses API key authentication via the X-API-Key header. Register at app.daxoom.com to get a free developer key.

Analytics & Management APIs use JWT Bearer token authentication. Obtain a token via POST /public/v1/auth/login. Most public-API consumers do not need a JWT — only API key issuance, rotation, and analytics require it.

Rate Limits

Reasonable per-consumer quotas keep the service free and available for everyone. Free developer keys default to 3,000 API calls per month; contact us if your use case needs a higher ceiling.

Over quota returns 429 with a plain {"error": "..."} body. No X-RateLimit-* or Retry-After headers are emitted, so pace requests to the monthly ceiling rather than reading them from a response.

Content Negotiation

The full-profile endpoint (GET /pubapi/v1/businesses/{id}) supports three response formats via the Accept header; all other endpoints return application/json only:

  • application/json (default) — structured JSON response
  • application/ld+json — schema.org-compatible JSON-LD
  • text/plain — AI-friendly natural language narrative

Pagination

/businesses and /services use offset-based pagination (/categories and /search return a single unpaginated result):

GET /pubapi/v1/businesses?offset=20&limit=20

Default page size: 20. Maximum: 100. The pagination block in the response includes limit, offset, has_more, and (when more results exist) next_offset — pass that value as offset on the next request.

Errors

Application errors (validation, not-found, etc.) follow RFC 7807 Problem Details, served as application/problem+json with type: "about:blank":

{
  "type": "about:blank",
  "title": "Invalid Parameter",
  "status": 400,
  "detail": "limit must not exceed 100",
  "request_id": "req_a1b2c3d4e5f6a7b8"
}

Authentication and quota failures (401/429), raised by the API-key middleware before the handler, are the exception: a JSON-shaped {"error": "..."} string served as text/plain.

Businesses

Search and retrieve verified business profiles

Search and filter businesses

Search businesses by category, location, attributes, rating, and more. Supports geo-spatial queries with radius/bounding box.

Authorizations:
ApiKeyAuth
query Parameters
category
string
Example: category=restaurant

Filter by the business's primary_group_id, matched exactly. Any exact id works — a top-level group (restaurant) or a nested category id (restaurant.italian). Aliases (e.g. pizzeria, eatery) are NOT resolved. Use /categories to discover ids.

city
string
Example: city=Irvine

City name

country
string
Example: country=US

Country code (ISO 3166-1 alpha-2)

lat
number <double>
Example: lat=33.6694

Latitude for geo search

lng
number <double>
Example: lng=-117.8231

Longitude for geo search

radius
number <double> >= 1
Example: radius=5000

Search radius in meters (default 5000)

attributes
string
Example: attributes=wifi,outdoor_seating,wheelchair_accessible

Comma-separated attribute filters (e.g., wifi,outdoor_seating)

price_range
string
Enum: "$" "$$" "$$$" "$$$$"

Price range filter: $, $$, $$$, $$$$

min_rating
number [ 1 .. 5 ]

Minimum aggregate rating (1.0–5.0)

verified_only
boolean
Default: false

Only return owner-verified profiles

q
string

Free-text search query

sort
string
Default: "relevance"
Enum: "relevance" "rating" "distance" "name"

Sort order

offset
integer >= 0
Default: 0

Pagination offset — number of rows to skip. Use the next_offset from the previous response to advance.

limit
integer [ 1 .. 100 ]
Default: 20

Page size (default 20, max 100)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    },
  • "meta": {
    }
}

Get full business profile

Returns the complete business profile including contact, location, hours, offerings, media, social links, AI context, attributes, and structured answers. All sub-models are composed into a single response.

Authorizations:
ApiKeyAuth
path Parameters
id
required
integer <int64>
Example: 1001

Numeric business ID.

Responses

Response samples

Content type
{
  • "data": {
    },
  • "meta": {
    }
}

Get business operating hours

Returns the business's regular weekly operating hours (one or more rows per configured day). Special/holiday overrides and the timezone are available on the full profile (GET /businesses/{id}), not here.

Authorizations:
ApiKeyAuth
path Parameters
id
required
integer <int64>
Example: 1001

Numeric business ID.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Get business offerings

Returns menu items, services, or products organized by offering groups.

Optional price-aware query params (type, q, min_price, max_price, sort) filter and sort the offerings server-side — e.g. "lunch menu under $20" maps to type=M&max_price=20. When q or a price bound (min_price/max_price) is set, the response also includes a flat matched_items array of the items that passed the filter, each with offering, name, price, currency, price_label, and availability — so an agent can quote a price without walking the nested groups. A type-only or sort-only request returns the bare offerings array unchanged.

Authorizations:
ApiKeyAuth
path Parameters
id
required
integer <int64>
Example: 1001

Numeric business ID.

query Parameters
type
string
Enum: "S" "M" "P" "K"

Filter by offering type: S = service, M = menu section, P = product, K = package.

q
string
Example: q=pasta

Free-text filter over item and offering names (e.g. pasta, oil change, haircut).

min_price
number

Only return items priced at or above this amount (in the item currency).

max_price
number

Only return items priced at or below this amount (e.g. 20 for "menu under $20").

sort
string
Enum: "price_asc" "price_desc" "name"

Sort items within each offering and the matched_items array.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Get business attributes

Returns structured, queryable boolean and enum properties (amenities, policies, accessibility). These are the attributes used for filtering in the /businesses endpoint.

Authorizations:
ApiKeyAuth
path Parameters
id
required
integer <int64>
Example: 1001

Numeric business ID.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Get structured Q&A

Returns pre-written answers to common questions AI systems receive about this business. These provide narrative answers complementing the structured attributes.

Authorizations:
ApiKeyAuth
path Parameters
id
required
integer <int64>
Example: 1001

Numeric business ID.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Get AI-specific context

Returns AI-optimized metadata including conversation-ready descriptions, canonical facts, hallucination corrections, disambiguation info, and tone preferences. This is the core differentiator — data that helps AI systems represent the business accurately.

Authorizations:
ApiKeyAuth
path Parameters
id
required
integer <int64>
Example: 1001

Numeric business ID.

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Search

Semantic and natural language search

Semantic search

Natural language search resolved to structured filters. Pass a free-text query and get matching businesses.

Example: ?q=italian restaurant with outdoor seating near Irvine

Authorizations:
ApiKeyAuth
query Parameters
q
required
string
Example: q=italian restaurant with outdoor seating near Irvine

Natural language search query

city
string
Example: city=Irvine

Optional city filter applied alongside the query.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": {
    }
}

Search services / menu items / products

Cross-business search over individual offering items (services, menu items, products) with geo, category, type, and price filters — the REST twin of the search_services MCP tool. Paginated via limit/offset.

Authorizations:
ApiKeyAuth
query Parameters
q
string

Free-text query over item name, item description, or offering name.

category
string
type
string
Enum: "S" "M" "P" "K"

Offering type: S service, M menu section, P product, K package.

min_price
number
max_price
number
lat
number
lng
number
radius
number

Radius in metres around lat/lng (0 = no geo filter).

sort
string
Enum: "price" "distance" "relevance"

Ordering: price, distance, or relevance (default).

offset
integer >= 0
Default: 0

Pagination offset — number of rows to skip. Use the next_offset from the previous response to advance.

limit
integer [ 1 .. 100 ]
Default: 20

Page size (default 20, max 100)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    }
}

Categories

Browse the business category catalog

List category catalog

Returns the flat category catalog (schema.org type mappings + comma-separated aliases). Rows are linked by parent_id. Any row's id — top-level or nested (e.g. restaurant.italian) — is a valid /businesses category filter value; matching is exact with no parent roll-up, and aliases are not resolved.

Authorizations:
ApiKeyAuth

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

API Keys

Manage your API keys

Generate an API key

Mints a new API key owned by your account. The full key is returned only once in the response — store it securely. Subsequent lists show only the prefix.

Authorizations:
BearerAuth
Request Body schema: application/json
required
key_name
required
string

Human-readable name for this key

scopes
string

Space-delimited scopes (default: query). Grant 'write' to allow the feedback MCP tools (submit_review, report_incorrect_data).

Responses

Request samples

Content type
application/json
{
  • "key_name": "My AI Agent - Production",
  • "scopes": "query"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Roll (rotate) an API key

Issues a replacement key for the given key id; the old key keeps working for a 24-hour grace period, then stops.

Authorizations:
BearerAuth
Request Body schema: application/json
required
id
required
integer

The api_key id to roll.

Responses

Request samples

Content type
application/json
{
  • "id": 0
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "meta": {
    }
}

List API keys

Returns your account's API keys via the generic REST list action (GET). Key values are masked — only the prefix is shown. Supports ?limit= and ?offset= query paging.

Authorizations:
BearerAuth
query Parameters
offset
integer >= 0
Default: 0

Pagination offset — number of rows to skip. Use the next_offset from the previous response to advance.

limit
integer [ 1 .. 100 ]
Default: 20

Page size (default 20, max 100)

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "meta": {
    }
}

Revoke an API key

Revokes the API key via the generic REST delete action (DELETE; POST is also accepted). Pass the key id as a query filter, e.g. ?id=42. Requests using the revoked key return 401.

Authorizations:
BearerAuth
query Parameters
id
required
integer

The api_key id to revoke.

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "meta": {
    }
}

Analytics

AI visibility analytics for your businesses

Visibility overview

Summary of AI visibility metrics: total queries, unique AI platforms, and trend data over configurable time periods.

Authorizations:
BearerAuth
path Parameters
businessId
required
integer
Example: 1001

Business ID

query Parameters
period
string
Default: "30d"
Enum: "7d" "30d" "90d" "365d"

Time period for analytics. Invalid values are rejected with 400; omitted defaults to 30d.

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Query volume over time

Time-series data of API query volume at hourly or daily granularity.

Authorizations:
BearerAuth
path Parameters
businessId
required
integer
Example: 1001

Business ID

query Parameters
period
string
Default: "30d"
Enum: "7d" "30d" "90d" "365d"

Time period for analytics. Invalid values are rejected with 400; omitted defaults to 30d.

granularity
string
Default: "daily"
Enum: "hourly" "daily"

Data granularity. Invalid values are rejected with 400; omitted defaults to daily.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

AI platform breakdown

Shows which AI platforms are querying this business and how often.

Authorizations:
BearerAuth
path Parameters
businessId
required
integer
Example: 1001

Business ID

query Parameters
period
string
Default: "30d"
Enum: "7d" "30d" "90d" "365d"

Time period for analytics. Invalid values are rejected with 400; omitted defaults to 30d.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Trending search queries

Most popular search queries that led to this business being returned in results.

Authorizations:
BearerAuth
path Parameters
businessId
required
integer
Example: 1001

Business ID

query Parameters
period
string
Default: "30d"
Enum: "7d" "30d" "90d" "365d"

Time period for analytics. Invalid values are rejected with 400; omitted defaults to 30d.

limit
integer [ 1 .. 100 ]
Default: 10

Max queries returned (integer 1–100; out-of-range is rejected).

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Most queried endpoints

Which API endpoints are queried most for this business (hours, offerings, ai-context, etc.). Coverage is capped at 90 days — the query log is pruned — so period=365d returns the last 90 days.

Authorizations:
BearerAuth
path Parameters
businessId
required
integer
Example: 1001

Business ID

query Parameters
period
string
Default: "30d"
Enum: "7d" "30d" "90d" "365d"

Time period for analytics. Invalid values are rejected with 400; omitted defaults to 30d.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

List visibility reports

Returns generated monthly visibility reports for this business.

Authorizations:
BearerAuth
path Parameters
businessId
required
integer
Example: 1001

Business ID

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Get a visibility report

Returns a specific monthly visibility report as JSON.

Authorizations:
BearerAuth
path Parameters
businessId
required
integer
Example: 1001

Business ID

reportId
required
integer

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

System

Health checks and status

Health check

Public health check endpoint. No authentication required. Mounted at the host root (not under /v1) so VPC-internal probes can hit it without version-coupling.

Responses

Obtain a JWT bearer token

Exchange username + password for a JWT bearer token. The token is required as Authorization: Bearer … for the Analytics and API-Key Management endpoints. Most public-API consumers do not need this — they authenticate with an X-API-Key header on the Public Query API.

Request Body schema: application/json
required
username
required
string
password
required
string <password>

Responses

Request samples

Content type
application/json
{
  • "username": "string",
  • "password": "pa$$word"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "meta": {
    }
}