Zomato scraper API: search results as JSON
Send any Zomato page URL with recipe=zomato and get name, url, title as JSON. No selectors to write, no proxies to pick.
- 1 page type
- 3 fields
- 25 credits a page · $2.49 per 1,000
- Working · 100% in 7 days
5,000 free credits for 7 days, no card.
curl -G 'https://api.ujeebu.com/scrape' \
-H "ApiKey: $UJEEBU_API_KEY" \
--data-urlencode 'url=https://www.zomato.com/ncr/restaurants' \
--data-urlencode 'recipe=zomato'
{
"result": {
"item_list": [
{
"name": "Dhaba - Estd 1986 Delhi",
"url": "/ncr/dhaba-estd-1986-delhi-connaught-place-ne..."
}
]
},
"success": true
}
What you get from Zomato
The fields of each page type and a real sample from our last validation, shortened.
Search and listing pages recipe=zomato 25 credits a page
| Field | Type | Example |
|---|---|---|
places | list of 3+ items | |
places[].url | URL | https://www.zomato.com/ncr/dhaba-estd-1986-delhi-connaught-place-ne... |
places[].title | text | Dhaba - Estd 1986 Delhi |
item_list | list of 3+ items | |
item_list[].name | text | Dhaba - Estd 1986 Delhi |
item_list[].url | URL | /ncr/dhaba-estd-1986-delhi-connaught-place-new-delhi/info |
Sample answer, validated 2026-11-13
{
"item_list": [
{
"name": "Dhaba - Estd 1986 Delhi",
"url": "/ncr/dhaba-estd-1986-delhi-connaught-place-new-delhi/info"
},
{
"name": "The GT Road",
"url": "/ncr/the-gt-road-connaught-place-new-delhi/info"
}
],
"places": [
{
"url": "https://www.zomato.com/ncr/dhaba-estd-1986-delhi-connaught-place-new-delhi/info",
"title": "Dhaba - Estd 1986 Delhi"
},
{
"url": "https://www.zomato.com/ncr/the-gt-road-connaught-place-new-delhi/info",
"title": "The GT Road"
}
]
}
One call
Send the page URL and the recipe name to the Scrape API. The recipe brings the extract rules and the settings that work on Zomato (JavaScript rendering and the premium proxy (IN)).
curl -G 'https://api.ujeebu.com/scrape' \
-H "ApiKey: $UJEEBU_API_KEY" \
--data-urlencode 'url=https://www.zomato.com/ncr/restaurants' \
--data-urlencode 'recipe=zomato'
import os, requests
r = requests.get(
"https://api.ujeebu.com/scrape",
params={"url": "https://www.zomato.com/ncr/restaurants", "recipe": "zomato"},
headers={"ApiKey": os.environ["UJEEBU_API_KEY"]},
timeout=120,
)
for item in r.json()["result"]["item_list"][:3]:
print(item["name"], item["url"])
# Example output:
# Dhaba - Estd 1986 Delhi /ncr/dhaba-estd-1986-delhi-connaught-...
# The GT Road /ncr/the-gt-road-connaught-place-new-...
const params = new URLSearchParams({
url: "https://www.zomato.com/ncr/restaurants",
recipe: "zomato",
});
const res = await fetch(`https://api.ujeebu.com/scrape?${params}`, {
headers: { ApiKey: process.env.UJEEBU_API_KEY },
});
const { result } = await res.json();
for (const item of result.item_list.slice(0, 3)) {
console.log(item.name, item.url);
}
// Example output:
// Dhaba - Estd 1986 Delhi /ncr/dhaba-estd-1986-delhi-connaught-...
// The GT Road /ncr/the-gt-road-connaught-place-new-...
The answer is {"result": {...}} with the headers Ujb-Recipe and Ujb-Credits. Your own parameters always win over the recipe.
Search Zomato with parameters
One call, no URL: send recipe=zomato/search with the parameters below. We build the Zomato search URL and answer the listing JSON, at the same credits as the page call.
| Parameter | Type | Values |
|---|---|---|
location required | string | City or area, as typed on Zomato. |
One call (location=ncr)
curl -G 'https://api.ujeebu.com/scrape' \
-H 'ApiKey: YOUR_API_KEY' \
-d 'recipe=zomato/search' \
-d 'location=ncr'
import os, requests
r = requests.get(
"https://api.ujeebu.com/scrape",
params={"recipe": "zomato/search", "location": "ncr"},
headers={"ApiKey": os.environ["UJEEBU_API_KEY"]},
timeout=120,
)
for item in r.json()["result"]["item_list"][:3]:
print(item["name"], item["url"])
# Example output:
# Dhaba - Estd 1986 Delhi /ncr/dhaba-estd-1986-delhi-connaught-...
# The GT Road /ncr/the-gt-road-connaught-place-new-...
const params = new URLSearchParams({
recipe: "zomato/search",
location: "ncr",
});
const res = await fetch(`https://api.ujeebu.com/scrape?${params}`, {
headers: { ApiKey: process.env.UJEEBU_API_KEY },
});
const { result } = await res.json();
for (const item of result.item_list.slice(0, 3)) {
console.log(item.name, item.url);
}
// Example output:
// Dhaba - Estd 1986 Delhi /ncr/dhaba-estd-1986-delhi-connaught-...
// The GT Road /ncr/the-gt-road-connaught-place-new-...
The answer carries the built URL in the Ujb-Url header; a missing or invalid parameter answers 400 naming it (free). Have the URL already? Send it with recipe=zomato/listing. Search with parameters in the docs
What people build with Zomato data
Local market research
Map the businesses of a category in a city, with their ratings and price range.
Learn more
Price
Same price as the page call, no fee for the recipe. Only successful responses are billed; blocked, timed-out and failed requests are free.
| Page type | Credits a page | Per 1,000, Starter | Per 1,000, Pro |
|---|---|---|---|
| Search results | 25 | $4.08 | $2.49 |
FAQ
What does the Zomato recipe return?
JSON with 3 fields from search results (recipe=zomato), for example name, url, title. The answer is {"result": {...}} with the fields shown on this page.
How much does it cost to scrape Zomato?
25 credits a page ($2.49 per 1,000 on Pro, $4.08 on Starter). Same price as the page call, no fee for the recipe. Only successful responses are billed; blocked, timed-out and failed requests are free.
Do I need proxies or a headless browser?
No. The recipe brings the settings that work on Zomato: JavaScript rendering and the premium proxy (IN). Send only the URL and recipe=zomato.
What happens when Zomato changes its pages?
We check Zomato every day and re-validate the recipe on real pages every week, then fix it when the site changes. Until a fix is live, the API answers 404 "the recipe has no working version" instead of empty data, and that call is free.
Can I search Zomato with parameters?
Yes, in one call: send recipe=zomato/search with location and no URL. We build the Zomato search URL (returned in the Ujb-Url header), apply recipe=zomato/listing and answer its JSON, at the same credits as the page call. A missing or invalid parameter answers 400 naming it, and that call is free.
Related recipes
TripAdvisorSearch results · 25 credits- Yellow PagesSearch results · 5 credits
LinkedInSearch results, Detail page, Profile · 5 credits
AmazonSearch results · 5 credits
X (Twitter)Profile · 5 credits
InstagramProfile · 5 credits
Logos and names belong to their owners. Ujeebu is not affiliated with Zomato.
Get Zomato data as JSON today.
5,000 free credits for 7 days. No card.