methodology

How this data is produced, in full.

If you are going to make decisions on our records, you should be able to evaluate how they were made. Nothing here is marketing copy.

where the data comes from

Menus are read from restaurants' own websites and menu documents — HTML pages, JS-rendered apps, and PDFs. We do not copy aggregator or delivery-platform listings, because those carry their own transcription errors and their own prices.

Every record is keyed to a Google Place ID so it joins directly to your data.

what verified means

After extraction, items are re-read against the source document and matched one by one. A menu is graded verified only when that second pass confirms the items. Confirmation rates are reported as measured — a run at 98% is published as 98%.

Weaker grades exist so you are never handed a guess dressed as a fact: crawled (read but not confirmed item-by-item), scanned (recovered from a document scan), and none (no menu content obtained).

why some restaurants are unavailable

Some sites cannot be read: content locked behind unreadable JS, image-only menus with no text layer, dead domains, or no website at all. Those restaurants stay in the catalog with menu_status: "unavailable", a machine-readable reason, and the date of the last attempt.

Read success is 81% where a website exists. We publish the failures because a dataset that hides them is impossible to audit.

record
{
  "name": "Smoking Tiger Coffee Lab",
  "place_id": "ChIJ…",
  "menu_status": "unavailable",
  "reason": "site_unreadable_js",
  "last_attempted": "2026-07-27"
}
refresh, receipts, and prices

Nightly reconciliation re-runs sources, diffs against what we hold, and re-grades anything that moved. Metro Feed customers receive a weekly refreshed catalog.

Every record carries a receipt: the source_url it was read from and the verified_at timestamp of the last successful verification. You can re-check any claim against the restaurant yourself.

Prices change without notice, and restaurants frequently publish stale menus. A price is a statement about what the source said at verified_at — not a guarantee about the register tonight.

known limitations
  • Coverage is LA & Orange County only. Other markets are not live.
  • 8,402 menus are fully priced; the rest have items without published prices.
  • Dine-in menus only. Catering, banquet, and delivery-only menus are out of scope.
  • Limited-time and seasonal items can lag the restaurant by up to one refresh cycle.
  • Diet tags reflect the restaurant's own labeling; we do not infer them.

The verification engine in detail →