Nicolas Sitter
Open data · CC-BY-4.0

Data & API

Everything on this site is available machine-readable — the live AI Hotel Landscape data feed and every research article. Free to use with attribution. No key, no signup.

The AI Hotel Landscape feed

Weekly snapshots of how 6 AI platforms (ChatGPT, Gemini, Perplexity, Copilot, Google AI Mode, Grok) recommend hotels across 56 destinations, from a 616-prompt corpus. Refreshed every Monday — the same data behind the live dashboard. Every endpoint returns JSON, or CSV with ?format=csv for spreadsheets.

Manifest

/api/landscape

Start here. Platforms (with status), the 56 destinations with slugs, every available snapshot week, the endpoint index, and the license terms — everything an agent needs to use the feed unaided.

Params: —
Try it

Top hotels

/api/landscape/hotels

The hotels each AI platform recommends most in a given week: rank, mention count, chain brand, website, and where its links point (direct / OTA / chain / other).

Params: platform · city · week · format=csv
Try it

Brand leaderboard

/api/landscape/brands

Chain-brand league table per platform per week: total mentions and how many distinct hotels carry them.

Params: platform · week · format=csv
Try it

Citation sources

/api/landscape/sources

Where each platform’s hotel citations come from — OTA, direct, chain, editorial, review, social, and more — with the top domains inside each category.

Params: platform · city · week · format=csv
Try it

Chain vs independent

/api/landscape/resolution

How each platform’s recommendations split between chains, independents, and vacation rentals.

Params: platform · week · format=csv
Try it
Every response carries the same envelope
{
  "schema_version": "1",
  "week_start": "2026-07-20",
  "license": "CC-BY-4.0 — https://creativecommons.org/licenses/by/4.0/",
  "attribution": "Nicolas Sitter — AI Hotel Landscape (nicolassitter.com)",
  "data": {
    "rows": [
      { "platform": "chatgpt", "rank": 1, "hotel_name": "…",
        "city": "Paris", "chain_brand": null, "mention_count": 12,
        "direct_links": 4, "ota_links": 6, "chain_links": 0, … }
    ]
  }
}

Quick start

# read the manifest (platforms, cities, weeks, endpoints)
curl -L https://nicolassitter.com/api/landscape

# top hotels ChatGPT recommends in Paris this week, as a spreadsheet
curl -L "https://nicolassitter.com/api/landscape/hotels?platform=chatgpt&city=paris&format=csv" -o hotels.csv

A2A agent for personal agents (PACT)

The same public data is also available as an A2A 1.0 agent that implements the Identity profile of PACT 1.0, the protocol personal AI agents use to talk to a business's agent. There are two agents: research and AI hotel data, and race results. Answers are rule-based (no model on this side) and read-only.

  • Agent Cards: /.well-known/agent-card.json (research) and /a2a/races/.well-known/agent-card.json
  • Send a message: POST /a2a/research/message:send with an A2A SendMessageRequest, text parts only. Reuse the returned contextId to continue a conversation (it closes after 24 hours).
  • Authentication: Authorization: Bearer a JWT your agent signs with ES256 or RS256. aud must be https://nicolassitter.com/a2a, sub a stable opaque user id, exp at most 300 seconds after iat.
  • Registration is open: any https issuer is accepted if its public keys are at {iss}/.well-known/openid-configuration (jwks_uri, same origin) or {iss}/.well-known/jwks.json.
  • Not supported: delegated authority (there are no accounts to delegate), streaming, push notifications and tasks.

Calls are logged like MCP calls on the agent tools tracker: the issuer, the tool the message was routed to and its parameters, and a hash of the user id. The message text is not stored.

Poppy (Personal Agent Protocol)

The site is also a Company under Poppy, draft 0.2. There are no accounts, so it offers only signed-out Sessions, and its Company Agent gives the same rule-based answers as the A2A agent above.

  • Discovery: /.well-known/poppy.json, issuer https://nicolassitter.com/poppy, metadata at /.well-known/oauth-authorization-server/poppy
  • Sessions: POST /poppy/oauth/token with the JWT bearer grant, private_key_jwt client authentication and a DPoP proof. Any Personal Agent whose client_id serves a client metadata document is accepted.
  • Conversations: /poppy/conversations, with messages, events by cursor, wait, handoff (always answered by the agent: no one staffs it), close and Direct Conversations. No streaming.
  • The MCP server is not listed in apis: Poppy would require it to publish OAuth protected-resource metadata, which would change how every other MCP client connects to it.

Terms of use

All data is published under CC-BY-4.0: use it in articles, research, products, or models — commercially or not — as long as you attribute it.

Nicolas Sitter — AI Hotel Landscape (nicolassitter.com)

Questions, higher-volume needs, or a dataset you wish existed? Get in touch.