Zomato API endpoint
Returns Zomato's own curated "best of" restaurant collections for a city (e.g. "Best pubs & bars", "Iconic restaurants", "Insta-worthy spots") -- distinct editorial groupings of restaurants, not a keyword/geo search. Each collection's url is the value /zomato/collection takes. Zomato curates collections for larger cities only; a real city it curates none for returns a 404.
/zomato/collectionsQuery parameters:
city (required) — Zomato public city slug, e.g. mumbai or ncr (the first path segment of a zomato.com city URL). /zomato/cities is the discovery source for this value.An unrecognized city slug returns a 404, and so does a real city that has no collections hub — Zomato curates collections for larger cities only, and asking for one it does not curate is reported as a missing page rather than an upstream failure.
Response includes city and collections[]. Each collection has name, url, num_places (a display string, e.g. 54 Places), and image_url.
| Field | Filled in, of 22 checked | Values in the sample |
|---|---|---|
| name | 22 | “Insta-worthy spots” and 21 other values |
| url | 22 | zomato.com |
| num_places | 22 | “58 Places” and 17 other values |
| image_url | 22 | b.zmtcdn.com |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| city | string | Yes | Zomato public city slug, e.g. \ | mumbai | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/zomato/collections?city=mumbai" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"city": "mumbai",
"collections": [
{
"name": "Best pubs & bars",
"url": "https://www.zomato.com/mumbai/best-bars-and-pubs",
"num_places": "54 Places",
"image_url": "https://b.zmtcdn.com/data/collections/bars.png"
},
{
"name": "Insta-worthy spots",
"url": "https://www.zomato.com/mumbai/insta-worthy",
"num_places": "59 Places",
"image_url": "https://b.zmtcdn.com/data/collections/insta.png"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/zomato.collectionsResponseDoc
| 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.CollectionsResponse | No | ||||
| data.city | string | No | ||||
| data.collections | array | No | ||||
| data.collections[].image_url | string | No | ||||
| data.collections[].name | string | No | ||||
| data.collections[].num_places | string | No | ||||
| data.collections[].url | string | No | ||||
| msg | unknown | No | Msg is the message that describes the result of the request @example "Request successful" |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 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/collections?city=mumbai" \
-H "x-api-key: $CRAWLORA_API_KEY"