PlateQuery API

A pay-per-query, read-only API for license plate lookups — messages posted about a plate, plus ALPR (automated license plate reader) search history where publicly available. 1 query = 1 credit. Built for AI agents first (MCP), with a plain REST API underneath.

Connect your agent →

Pricing

First 10 credits are free — confirm your email after signup to get them. After that, buy a package below — bulk costs less per credit. 1 credit = 1 query, MCP or REST.

PackageCreditsPrice$ / credit
Starter 250 $5.00 $0.020 Buy →
Growth 1,500 $25.00 $0.017 Buy →
Scale 8,000 $100.00 $0.013 Buy →

Buying requires an account. Confirm your email (check the activation link we send on signup) to get 10 free credits automatically. The button takes you to your account settings to check out via Stripe.

Need more than 8,000 lookups a month? Contact us for volume pricing.

Connect an agent (MCP)

There's no API key to create or copy. Add the server below to Claude, ChatGPT, Grok, or any other MCP-compatible client — it discovers everything else itself (that this server needs an account, where to log in or sign up, how to get a token) via standard OAuth 2.1. You'll be prompted to log in or create a free PlateQuery account right in the connection flow, and that's it.

Server URLhttps://api.platequery.com/mcp
AuthOAuth 2.1 (PKCE), discovered automatically — no manual token to paste
Toolslookup_plate, list_plate_messages, list_plate_alpr_mentions

Exact menu names shift between app versions — look for "Connectors," "Custom connector," "Tools," or "MCP servers" in that app's settings if a label below doesn't quite match what you see.

Claude (Desktop & Code)

Claude Desktop: Settings → Connectors → Add custom connector → paste the Server URL above. Claude detects that sign-in is required and opens the login/signup page for you.

Claude Code: claude mcp add --transport http platequery https://api.platequery.com/mcp — the OAuth flow runs the first time a tool from it is used.

ChatGPT

Settings → Connectors → Create (or "Advanced" / Developer mode, depending on your plan) → add a custom connector with the Server URL above. ChatGPT will walk you through signing in the first time it needs to.

Grok

In Grok's settings (grok.com or the X app), look for Connectors / Tools / MCP servers, and add a custom server with the Server URL above.

What your agent can do

Once connected, you can just ask in plain language — the agent picks the right tool and query for you:

REST API

The same account, same credits, same OAuth token work as a plain REST API too — for a script, a backend, or anything that isn't an MCP client. Every request costs 1 credit and returns your remaining balance in the X-Credits-Remaining header.

curl "https://api.platequery.com/v1/plates/lookup?plate=ABC123&region=California" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
{
  "plate": "ABC123",
  "region": "California",
  "private": false,
  "is_owner": false,
  "messages": [
    {"author": "3b12b2b...", "text": "Left their lights on in the lot!", "created_on": "2026-08-02T14:03:00Z"}
  ],
  "messages_total": 7,
  "flock_mentions_total": 3,
  "flock_mentions_source": "Flock Safety"
}

/v1/plates/lookup is a quick summary only — the latest 3 messages plus a total count, and just the ALPR-mention total (no rows). For the full history, paginated, use the two endpoints below.

Message history

Paginated. Also 1 credit per call, regardless of page. Default page size is 10, max 15.

curl "https://api.platequery.com/v1/plates/messages?plate=ABC123&region=California&page=1&page_size=10" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
{
  "plate": "ABC123",
  "region": "California",
  "private": false,
  "is_owner": false,
  "page": 1,
  "page_size": 10,
  "total": 7,
  "has_next": false,
  "results": [
    {"author": "3b12b2b...", "text": "Left their lights on in the lot!", "created_on": "2026-08-02T14:03:00Z"}
  ]
}

ALPR mention history

Automated license plate reader search history, where publicly available. Same shape and pricing as message history above.

curl "https://api.platequery.com/v1/plates/alpr-mentions?plate=ABC123&region=California&page=1&page_size=10" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
{
  "plate": "ABC123",
  "region": "California",
  "private": false,
  "is_owner": false,
  "page": 1,
  "page_size": 10,
  "total": 3,
  "has_next": false,
  "results": [
    {"agency": "Example PD", "searched_at": "2026-07-30T09:12:00Z", "source": "Flock Safety"}
  ]
}

Authentication (OAuth 2.1)

MCP and REST are both OAuth-only — there's no separate API key to manage. platequery.com is the authorization server; api.platequery.com only ever validates the tokens it issues.

Discoveryhttps://api.platequery.com/.well-known/oauth-protected-resource
Authorization server metadatahttps://platequery.com/.well-known/oauth-authorization-server
Client registrationOpen Dynamic Client Registration (RFC 7591) at https://platequery.com/o/register/ — or register one by hand from your account settings
GrantAuthorization Code + PKCE (S256) — the only grant this server accepts
Rate limit10 requests/minute per account

Writing your own client instead of using an off-the-shelf MCP host? Any standard OAuth 2.1 library that supports PKCE and RFC 7591 registration will work against the endpoints above.

Errors

401 Missing, invalid, or expired access token. The response includes a WWW-Authenticate header pointing at the discovery document above, so a compliant client can (re)authenticate automatically.
402 Out of credits. The response body includes buy_credits_url so you can top up without leaving your script.
429 Rate limited. The response includes a Retry-After header (seconds).