Zomato API endpoint
Returns Zomato's own curated directory of major Indian cities -- the discovery source for the city value used by zomato-search, zomato-restaurant, zomato-restaurant-menu, zomato-collections, and zomato-collection. This is Zomato's own "popular locations" directory, not an exhaustive list of every city Zomato serves -- some smaller markets resolve to a real Zomato city page without appearing here. A city slug from a caller's own prior knowledge (a restaurant URL's first path segment) can still be valid even if this endpoint does not return it.
/zomato/citiesThis is a curated directory, not an exhaustive list of every city Zomato serves. Zomato does not publish a single source enumerating every city it operates in — its "Cities we deliver to" widget (63 cities) and this directory (85+ cities) are both curated/"popular" subsets, and real, working Zomato city pages (e.g. shillong) appear in neither. A city slug from a caller's own prior knowledge — a restaurant or collection URL's first path segment, or Zomato's own city switcher — can still be valid even when this endpoint does not return it; zomato-search/zomato-restaurant/zomato-collections all validate a city slug against zomato.com itself (404 on a real miss), not against this list.
Query parameters:
q (optional) — case-insensitive substring match against a city's name or slug, e.g. mumbai, delhi, ncr. Omit to list every city in the directory.Response includes total (the matched count) and cities[], each with name (Zomato's own display name, e.g. Bengaluru, Delhi NCR), slug (the value the city query parameter above takes — not always a lower-cased version of name, e.g. Delhi NCR is slug ncr), and url (the city's canonical public Zomato page).
| Field | Filled in, of 1 checked | Values in the sample |
|---|---|---|
| name | 1 | “Mumbai” |
| slug | 1 | |
| url | 1 | zomato.com |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| q | string | No | Case-insensitive substring match against a city's name or slug. Omit to list every city in the directory. | mumbai | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/zomato/cities?q=coffee" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"total": 2,
"cities": [
{
"name": "Delhi NCR",
"slug": "ncr",
"url": "https://www.zomato.com/ncr"
},
{
"name": "Mumbai",
"slug": "mumbai",
"url": "https://www.zomato.com/mumbai"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/zomato.citiesResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | Code is the HTTP status code or a custom code used to indicate the result of the request @example 200 | |||
| data | zomato.CitiesResponse | No | ||||
| data.cities | array | No | ||||
| data.cities[].name | string | No | Mumbai | Name is Zomato's own display name for the city (e.g. "Bengaluru", "Delhi NCR") -- not always the same word as Slug. | ||
| data.cities[].slug | string | No | mumbai | Slug is the public Zomato city slug -- the value the `city` param on zomato-search/zomato-collections and the first path segment of every restaurant/collection URL this family returns use. Not always a lower-cased version of Name -- e.g. "Delhi NCR" is slug "ncr". | ||
| data.cities[].url | string | No | https://www.zomato.com/mumbai | URL is the city's canonical public Zomato page. | ||
| data.total | integer | No | ||||
| msg | unknown | No | Msg is the message that describes the result of the request @example "Request successful" |
| Status | Description | Schema |
|---|---|---|
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/zomato/cities?q=coffee" \
-H "x-api-key: $CRAWLORA_API_KEY"