For AI assistants and developers

Check a Korean Airbnb registration through one request

Send the registration details copied from Airbnb to SelectBNBs Verify. The public JSON API returns the permit record, source dates and a separate listing-match result. No login or API key is needed for individual checks.

Prefer to check it yourself? Paste the same details into the form.
Free allowance: five checks per public IP per UTC day, shared with the form. Only checks that find a record count.
Need more? Get a free API key instantly: 120 lookups an hour, no signup.

Start here

Paste the details into the query field

Use POST https://selectbnbs.com/api/registry/verify with Content-Type: application/json. Agents should identify themselves with X-SelectBNBs-Agent: YourAgent/1.0. Put the copied text in query, preserving the issuing area, permit type and number. The maximum is 4,000 characters. language accepts en, ko, ja or zh-Hant and defaults to en.

This complete request uses the La Maison719 listing example shown on the Verify page. It runs a real lookup and, because it finds a record, uses one free check.

curl --request POST 'https://selectbnbs.com/api/registry/verify' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --header 'X-SelectBNBs-Agent: YourAgent/1.0' \
  --data-binary @- <<'JSON'
{
  "query": "La Maison719\n등록 세부 정보\n발급 지역: 제주특별자치도 제주시, 애월읍\n허가 유형: 농어촌민박사업\n허가번호: 1729",
  "language": "en"
}
JSON

Copying the example does not run it.

The OpenAPI contract contains additional examples and the complete response schema. A tool that can send an HTTP POST can use this endpoint directly; it does not need to navigate a Korean search form or execute page JavaScript.

MCP connector

Use Verify inside your assistant

Add https://selectbnbs.com/mcp as a custom connector. No account and no key are needed.

  • Claude: add SelectBNBs Verify from Claude's connector directory, or Customize → Connectors → Add custom connector, and choose No sign-in.
  • ChatGPT: Settings → Plugins → Create MCP App, and choose No Authentication.
  • Claude Code: claude mcp add --transport http selectbnbs-verify https://selectbnbs.com/mcp
  • Gemini CLI: gemini mcp add --transport http selectbnbs https://selectbnbs.com/mcp

Then ask "Is this Airbnb in Korea licensed?" and paste the listing's Registration details. Each check returns the government status and its as-of date, the registered business, and a record link. Verify covers South Korea today; more countries are coming.

More lookups

Get a free API key instantly

Send your agent or app name and a key comes back at once. No signup, no email. The key raises both endpoints from the shared five checks a day to 120 lookups per hour per key.

curl --request POST 'https://selectbnbs.com/api/registry/keys' \
  --header 'Content-Type: application/json' \
  --data '{"name": "YourAgent/1.0"}'

Then send Authorization: Bearer <api_key> with POST /api/registry/verify or POST /api/registry/lookup. The key is shown once; SelectBNBs keeps only its hash. Lookups made with it are logged under the name you sent. Each connection can create three keys per UTC day.

When a match needs more

Keep short numbers in context

A short local number such as 1729 is not a nationwide identifier. The central datasets use longer management numbers. The example above is connected through existing catalog evidence; it does not demonstrate that every Airbnb number can be resolved by itself.

When the traveler has the registered name or Korean road address, append it after the copied block using Property name: or Address:. Preserve any Korean text. For example:

발급 지역: 제주특별자치도 제주시, 애월읍
허가 유형: 농어촌민박사업
허가번호: 1729
Property name: La Maison719
Address: 제주특별자치도 제주시 애월읍 납읍남로3길 144-2

The human form's optional name and address fields add these labels automatically. A registered name, road address or government management number can also be submitted on its own. The stay does not need to appear in the SelectBNBs collection.

A listing URL is not a recommended input: most listing URLs cannot be matched to a record. Ask the traveler to copy the Registration details box from the listing; it is the reliable starting point.

Read the result

Report the permit and the listing match separately

official_record.status and official_record.as_of
The registered business's permit finding and its source date. FOUND_ACTIVE applies to that business under the stated category as of that date.
identity_match.status
Whether the supplied listing details identify the same business. Only MATCH establishes that connection within the lookup's method. Keep PARTIAL, UNRESOLVED and NOT_APPLICABLE explicit.
records[]
The registered name, category, address, management number and source evidence. Cite public_record_url when supplied and the government's evidence.official_dataset_url. Keep source_updated_at distinct from cache_retrieved_at.
reporting_guidance
Supported claims and next steps. If multiple candidates remain, request more information. Do not pick the first record.

On 9 September 2026, the full example returned FOUND_ACTIVE and PARTIAL. A useful answer states both: an active rural-homestay record was found, but the listing-to-record connection was not conclusive. The citable example record can be read without running a lookup.

NOT_FOUND, AMBIGUOUS and ID_CLASS_UNSUPPORTED are not proof that a stay is illegal. Request the registered name, road address or fuller permit details. Registration does not establish every operating condition, guest eligibility or current safety condition.

Access and tools

Use the same public allowance

The browser form, plain links and direct API share five checks per public IP per UTC day. Only checks that return a record or a matching listing use one. Checks that find nothing, requests for more details, and repeats of a check made from the same connection that day are free. Each connection can make up to 20 checks a day in total. People and agents on a shared connection also share that allowance. On HTTP 429, stop and use Retry-After and the X-RateLimit-* reset headers. Do not retry in a loop or rotate connections to evade the limit. For more, get a free API key.

For one specific business, POST /api/registry/lookup is the lighter path: send {"management_number": "..."} or {"name": "...", "region": "제주특별자치도 제주시"} and get one record with name, permit type and official status. Anonymous callers share the public five-per-UTC-day allowance with the form and the verify API, and each anonymous lookup uses one of the five whether or not it finds a record; a free API key raises that to 120 per hour and adds the management number, authority, permit date and source citation. There is no pagination or browsing. The earlier bulk surfaces (area browse, context preview, catalog-checks.json, snapshots) were removed and answer 410 with a pointer to this endpoint.

HTTP 200 means a lookup response, which can still be an unresolved match. HTTP 422 means invalid input. HTTP 503, or a returned FEED_UNAVAILABLE status, means the check could not be completed.

An assistant that can open pages can use the plain link. An assistant with a browser interaction tool can also open Verify, fill the registration field and choose Check registration. An assistant that can only read search results cannot run a new lookup. It should give the traveler the link and say what it checks.

The response is built from SelectBNBs' scheduled cache of eight official Korean accommodation datasets. A public lookup does not make a fresh government API request. Check current coverage and freshness and the methodology. Private lookup records retain submitted text, IP address, approximate location, browser context, results and optional declared agent name to improve Verify. Shared form URLs include the search text. See our Verify privacy details.