Quick Lookup

Get data

The data behind every section of this site, for your agents, models and apps: a REST API, an MCP server for AI agents, and SQL. One key, the same data.

Guides to the whole service are in Docs, and the API reference describes every call and lets you try it.

Your first call in three steps

  1. 1Register your companyFree, and it takes a minute. Register
  2. 2Create a keyOn your account page. It's shown once, with a ready-made call.
  3. 3CallFor example the next 90 days' holidays, with the key in $QL_KEY:
curl -H "Authorization: Bearer $QL_KEY" -H "Content-Type: application/json" \
  "https://quicklookup.com/api/v1/services/037fd8b2-2918-5e6e-8bee-13bfec7c8326/query" \
  -d '{"inputs":{"from":"2026-11-12T00:00:00Z","to":"2027-02-10T00:00:00Z","country_code":"IS"}}'

Try a request

Paste an API key, pick a request and send it. The answer shows here with the headers that matter. Each try counts as one request, like any call.

The key stays in this page: never stored, sent only to us.

POST /api/v1/services/037fd8b2-2918-5e6e-8bee-13bfec7c8326/query

Every service and what it takes: the API reference and QuickLookup's guides.

For your systems: RESTAll the data through one API: find a service, inspect its contract and fetch the data.https://quicklookup.com/api/v1For AI agents: MCPOne line, and Claude, Cursor or another agent finds and fetches the data itself (one tool call at a time on Free, for development).https://quicklookup.com/mcp

SQL (Postgres-compatible), on Pro and Enterprise.

In detail

REST API

The API is QuickLookup's own, served here once your key and your tier's limits are checked. Three calls cover most needs: find a service, read its contract, query it.

1. Find a service

Search the catalogue by words, by type (time series, events, lookups) or by category.

curl -H "Authorization: Bearer $QL_KEY" \
  "https://quicklookup.com/api/v1/catalog/services?q=weather"

2. Read its contract

Each service lists the inputs it takes, the fields you can select, where its data comes from, and complete examples you can run as they are.

curl -H "Authorization: Bearer $QL_KEY" \
  "https://quicklookup.com/api/v1/catalog/services/037fd8b2-2918-5e6e-8bee-13bfec7c8326"

3. Query it

Send the inputs, choose the fields you need with select, filter with where. Here: Iceland's public holidays for the next 90 days.

curl -H "Authorization: Bearer $QL_KEY" -H "Content-Type: application/json" \
  "https://quicklookup.com/api/v1/services/037fd8b2-2918-5e6e-8bee-13bfec7c8326/query" \
  -d '{
  "inputs": {
    "from": "2026-11-12T00:00:00Z",
    "to": "2027-02-10T00:00:00Z",
    "country_code": "IS"
  },
  "order": "asc",
  "limit": 100
}'
A place and a day

Resolve almost any input (a name, an address, coordinates, an IP address, a phone number, an email or web address) to a place, then ask for everything known about that place on a day.

curl -H "Authorization: Bearer $QL_KEY" -H "Content-Type: application/json" \
  "https://quicklookup.com/api/v1/resolve" -d '{
  "input": "Harpa",
  "countryCodes": [
    "IS"
  ]
}'

curl -H "Authorization: Bearer $QL_KEY" -H "Content-Type: application/json" \
  "https://quicklookup.com/api/v1/context/day" -d '{
  "location": {
    "resolve": "Harpa"
  },
  "date": "2026-11-12",
  "timezone": "Atlantic/Reykjavik"
}'
Events near a place

Every event feed searched at once, nearest first. Here: today's events within 2 km of central Reykjavík.

curl -H "Authorization: Bearer $QL_KEY" -H "Content-Type: application/json" \
  "https://quicklookup.com/api/v1/events/search" -d '{
  "from": "2026-11-12T00:00:00Z",
  "to": "2026-11-13T00:00:00Z",
  "near": {
    "latitude": 64.1466,
    "longitude": -21.9426,
    "radiusKm": 2
  },
  "order": "distance_asc",
  "limit": 50
}'
From Python
import os, httpx

api = httpx.Client(
    base_url="https://quicklookup.com/api/v1",
    headers={"Authorization": f"Bearer {os.environ['QL_KEY']}"},
)

# Hourly weather for a point in Reykjavík, today
body = {
    "inputs": {"from": "2026-11-12T00:00:00Z", "to": "2026-11-13T00:00:00Z",
               "lat": 64.1466, "lon": -21.9426},
    "limit": 100,
}
rows, cursor = [], None
while True:
    page = api.post("/services/84451ef4-fc70-5f94-8346-01e2a5e69f5f/query",
                    json={**body, "cursor": cursor}).raise_for_status().json()
    rows += page["items"]
    cursor = page.get("nextCursor")
    if not cursor:
        break
print(len(rows), "rows")
Paging and caching · Errors

Answers come in pages of up to 10,000 rows. Pass nextCursor back unchanged until it is null. Responses carry an ETag: send it back as If-None-Match and an unchanged answer returns 304 with no body.

401missing_keyNo key was sent. Send it as Authorization: Bearer YOUR_KEY.
401invalid_keyThe key is wrong, revoked or expired. Create a new one on your account.
429too_many_attemptsToo many wrong keys from one address. Wait a minute.
429rate_limitedToo many requests in a second or a minute. Wait as Retry-After says.
429too_many_at_onceToo many REST requests in progress at once. Wait for an answer before sending the next.
429mcp_busyToo many MCP tool calls in progress at once.
429mcp_protocol_limitedOver 120 MCP messages a minute (lists, discovery). Keep the tool list.
429quota_exceededThe month's requests (and extra credits) are used. Buy more or change tier; the quota resets on the 1st (UTC).
403period_not_in_tierA date outside your tier's period. Higher tiers reach further.
403premium_dataPremium third-party data, only under its provider's licence (Enterprise).
403mcp_not_in_tierMCP isn't part of your tier.
503unavailableQuickLookup didn't answer. Try again shortly; it costs no request.
MCP for AI agents

QuickLookup's MCP server gives agents the same data as the REST API, through read-only tools. It speaks Streamable HTTP; your API key is the credential.

Claude Code

claude mcp add --transport http quicklookup https://quicklookup.com/mcp \
  --header "Authorization: Bearer $QL_KEY"

Clients configured with JSON (Claude Desktop, Cursor and others)

{
  "mcpServers": {
    "quicklookup": {
      "type": "http",
      "url": "https://quicklookup.com/mcp",
      "headers": {
        "Authorization": "Bearer <your API key>"
      }
    }
  }
}

Tools

list_data_services
Search the catalogue.
get_data_service
Read a service's contract and its runnable examples.
query_data_service
Query a service.
search_nearby_events
Events near a point, across every feed.
list_time_series_families
Find families of related time series.
get_time_series_family
Inspect a family and its series.
list_saved_context, get_saved_context, resolve_saved_context, query_saved_event_context
Saved places and their context.
SQL

SQL over the same data, through our semantic layer, for Pro and Enterprise: connect any Postgres or MySQL client, BI tool or notebook. for the connection details.

Limits, licences and attribution

A request is a REST call or an MCP tool call that QuickLookup answered. Refused calls and failures on our side cost nothing, nor do MCP messages like the tool list. They're counted per company each month (UTC); see pricing.

LimitFreeBasicProEnterprise
Requests a month1,00025,000250,000By agreement
A minute10603001,200
A second152050
REST in progress at once1310By agreement
MCP tool calls at once1320Unlimited

Every answer carries the limits and what's left of them:

X-Quota-Limit · X-Quota-Remaining
the month's requests and how many are left
X-Credits-Remaining
extra credits left, once the month's are used
X-RateLimit-Limit · X-RateLimit-Remaining
requests a minute and how many are left
RateLimit-Policy
the second's and the minute's allowance
Retry-After
seconds until you may try again, with every 429
  • Several sources require attribution wherever you show their data. Sources lists which, and the exact wording.
  • Premium third-party data, such as Trading Economics' markets and indicators, is available only where that provider's licence allows it. Ask us about Enterprise.

A key in a minute

Register your company free: a year back and a week ahead, every calendar whole and a REST key at once. No card.