Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
title: entityindex.ai Index API
version: 1.0.0
summary: Read-only index of verified businesses for AI agents (today, hotels in Andorra).
description: 'Public, read-only JSON API of entityindex.ai, an index of verified businesses
built for AI agents. The first vertical is hotels and accommodation in Andorra;
more verticals (e.g. restaurants) will follow the same entity schema.
- Every verified fact comes from the business''s official website and carries
its source URL and check date.
- entityindex.ai does not book, sell or charge anything. `action_url` points to
the official website or booking engine with `src=entityindex`.
- No authentication, no API key, no cookies. CORS is open (`Access-Control-Allow-Origin: *`).
- Responses are static JSON files; data is regenerated periodically (see `generated`).
- A Model Context Protocol (MCP) server with the same data is available at `/mcp`.
Data license: CC BY 4.0. Attribution: "entityindex.ai — MERX TECHNOLOGIES, SLU".'
contact:
name: entityindex.ai
url: https://entityindex.ai/legal/en/
license:
name: CC BY 4.0
identifier: CC-BY-4.0
url: https://creativecommons.org/licenses/by/4.0/
x-logo:
url: https://entityindex.ai/badge/verified.svg
servers:
- url: https://entityindex.ai
description: Production
security: []
tags:
- name: Index
description: Discovery of countries, verticals and schemas.
paths:
/api/entities.json:
get:
tags:
- Index
operationId: getEntityIndex
summary: Index of countries and verticals
description: Entry point. Lists every available country/vertical pair with its record count and the URL of its list.
responses:
'200':
description: Index of countries and verticals.
content:
application/json:
schema:
$ref: '#/components/schemas/EntityIndex'
4XX:
$ref: '#/components/responses/ClientError'
/api/verticals.json:
get:
tags:
- Index
operationId: listVerticals
summary: Verticals, countries and languages
description: Describes each vertical (labels, schema.org type, subtypes, verified fields, URLs, MCP tools) and the available languages.
responses:
'200':
description: Verticals catalogue.
content:
application/json:
schema:
$ref: '#/components/schemas/VerticalsCatalogue'
4XX:
$ref: '#/components/responses/ClientError'
/api/schema/entity.json:
get:
tags:
- Index
operationId: getEntitySchema
summary: JSON Schema of an entity record
description: JSON Schema (draft 2020-12) of the common entity record shared by all verticals.
responses:
'200':
description: JSON Schema document.
content:
application/json:
schema:
type: object
description: A JSON Schema (draft 2020-12) document.
additionalProperties: true
4XX:
$ref: '#/components/responses/ClientError'
components:
schemas:
EntityIndex:
type: object
properties:
generated:
type: string
format: date
model:
type: object
additionalProperties:
type: string
sectors:
type: array
items:
type: object
properties:
country:
type: string
example: AD
sector:
type: string
example: hotels
count:
type: integer
example: 72
list:
type: string
description: Path of the list
example: /api/entities/andorra/hotels.json
license:
$ref: '#/components/schemas/License'
entity_schema:
type: string
example: /api/schema/entity.json
verticals:
type: string
example: /api/verticals.json
url_pattern:
type: string
example: /{country}/{vertical}/{slug}/
VerticalsCatalogue:
type: object
properties:
generated:
type: string
format: date
url_pattern:
type: string
entity_schema:
type: string
verticals:
type: array
items:
type: object
properties:
country:
type: string
example: andorra
country_code:
type: string
example: AD
vertical:
type: string
example: hotels
label:
type: object
additionalProperties:
type: string
schema_type:
type: string
example: LodgingBusiness
subtypes:
type: object
additionalProperties:
type: string
pages:
type: string
list:
type: string
entity:
type: string
example: /api/entities/andorra/hotels/{slug}.json
faq:
type: object
additionalProperties:
type: string
sitemap:
type: string
verified_fields:
type: array
items:
type: string
mcp:
type: object
additionalProperties:
type: string
count:
type: integer
license:
$ref: '#/components/schemas/License'
languages:
type: object
properties:
available:
type: array
items:
type: string
example:
- es
- en
- fr
- ca
default:
type: string
example: es
url_prefix:
type: object
additionalProperties:
type: string
License:
type: object
properties:
name:
type: string
example: CC BY 4.0
url:
type: string
format: uri
example: https://creativecommons.org/licenses/by/4.0/
attribution:
type: string
example: entityindex.ai — MERX TECHNOLOGIES, SLU
Error:
type: object
required:
- error
- status
- message
properties:
error:
type: string
description: Machine-readable error code
example: not_found
status:
type: integer
description: HTTP status code
example: 404
message:
type: string
description: Human-readable explanation
docs:
type: string
format: uri
description: Link to the documentation
responses:
ClientError:
description: Client error, e.g. 404 when the country, vertical or entity does not exist.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: not_found
status: 404
message: No resource at /api/entities/andorra/hotels/unknown.json
docs: https://entityindex.ai/openapi.yaml
externalDocs:
description: Guide for LLMs and agents (llms.txt)
url: https://entityindex.ai/en/llms.txt