Search restaurants
GET/api/v1/restaurants/search
Name or street search — the typeahead endpoint. Best matches first. **Location-aware queries.** Append a place to the name and the search scopes to it: `q=dos toros williamsburg` searches for “dos toros” in Williamsburg's zip codes. Recognized locations (matched from the end of the query): ~180 NYC neighborhood names and abbreviations (`williamsburg`, `east village`, `hell's kitchen`, `les`, `uws`, `lic`, `fidi`…), borough names and slang (`brooklyn`, `bk`, `staten island`), and bare NYC zip codes (`q=pizza 11211`). If nothing matches in the location, the search automatically falls back citywide — a place word never makes results worse. Partial place names match as you type — `q=joes willia` already scopes to Williamsburg — and a query whose trailing token matches nothing is retried once without it, so suggestions never vanish mid-word. **Punctuation-insensitive names.** Matching ignores apostrophes, periods, hyphens, and ampersands on both sides: `q=joes` finds JOE'S PIZZA, `q=lindustrie` finds L'INDUSTRIE PIZZERIA. **Typo-tolerant matching.** Slight misspellings still match: `q=chipotel` and `q=chiptole` both find CHIPOTLE MEXICAN GRILL. Exact matches always outrank fuzzy ones, and the closest spelling wins among fuzzy candidates — garbage strings return nothing rather than noise. **Proximity ranking.** Pass `lat` + `lng` (together) and equally-good name matches sort nearest first — `q=chipotle` from SoHo returns the Spring Street location before the Bronx one — and every result gains an additive `distanceMeters`. Distance never outranks a better name match; it breaks ties.
Parameters
| Name | Type | Description |
|---|---|---|
| q * | string | Name or address fragment, 2–120 chars. Optionally suffixed with a neighborhood, borough, or zip. |
| limit | integer | Max results, 1–25 (default 10). |
| lat | number | Optional origin latitude (NYC bounds; requires lng). Enables proximity ranking + distanceMeters. |
| lng | number | Optional origin longitude (NYC bounds; requires lat). |
Response — the `data` object
| Field | Type | Description |
|---|---|---|
| camis | string | DOHMH permit number — the establishment's id. |
| name | string | Doing-business-as name. |
| address | string | Street address (borough is its own field). |
| borough | string | Borough. |
| zip | string | null | ZIP code. |
| cuisine | string | null | Cuisine description. |
| grade | string | null | Posted grade: A|B|C|Z|P|N (Z/P = pending, N = not yet graded). |
| score | integer | null | Latest inspection score — LOWER is better; 0–13 is the A band. |
| closed | boolean | Currently marked closed by the Health Department. |
| riskLevel | LOW | MODERATE | HIGH | SEVERE | LOW | MODERATE | HIGH | SEVERE. |
| riskScore | integer | 0–100, higher is worse. |
| lastInspectedAt | string | null | Most recent inspection. |
| latitude | number | null | |
| longitude | number | null | |
| openViolations | integer | Items open right now (latest-cycle citations). |
curl "https://www.dailydog.ai/api/v1/restaurants/search?q=example" \
-H "Authorization: Bearer dd_test_d23d83e5ee04c87b1fee30680033c31aa0ef7985"{
"data": [
{
"camis": "90000001",
"name": "THE GILDED SPOON",
"address": "12 TEST STREET",
"borough": "Manhattan",
"zip": "10001",
"cuisine": "French",
"grade": "A",
"score": 9,
"closed": false,
"riskLevel": "LOW",
"riskScore": 4,
"lastInspectedAt": "2026-05-01",
"latitude": 40.75,
"longitude": -73.99,
"openViolations": 1
}
]
}