Bing Recipes Scraper API
Our Bing recipes scraper reads the inline recipe carousel Bing shows for a food query, returning each recipe as JSON: title, source site, rating, total time, thumbnail, and the real recipe link, with a graceful fall back to organic recipe destinations when the carousel is not shown.
Why Bing makes Bing Recipes data hard
Bing shows recipes as an inline magazine carousel, but it is query-dependent and only server-renders on the plain, un-market-pinned SERP when the query implies a recipe. We build the request so the carousel triggers, append the word recipe when it is missing, and parse each card into clean JSON; when Bing declines to show the carousel, we fall back to the organic recipe results so the call is still useful.
The Bing Recipes Scraper API, one request away
curl "https://api.bingscraperapi.com/api/v1/bing/recipe?q=chocolate+chip+cookies&api_key=$API_KEY" import requests
BASE = "https://api.bingscraperapi.com"
API_KEY = "YOUR_API_KEY"
data = requests.get(
f"{BASE}/api/v1/bing/recipe",
params={"q": "chocolate chip cookies", "api_key": API_KEY},
timeout=30,
).json()
# block is 'carousel' when Bing shows the recipe carousel,
# or 'organic_fallback' when it does not.
print(data["block"], "-", data["results_count"], "recipes")
for r in data["results"]:
print(r["position"], r["title"], "-", r["source"])
print(" rating:", r["rating"], "| time:", r["total_time"])
print(" ", r["link"]) Parameters
| Parameter | Required | Default | Notes |
|---|---|---|---|
q | required | - | The recipe or dish query, e.g. chocolate chip cookies. The word recipe is appended automatically if missing so the carousel triggers. |
url | optional | - | A full bing.com/search URL to parse instead of building one from q. Pass q or url. |
count | optional | 30 | Max results to return, 1 to 60. Defaults to 30. |
api_key | required | - | Your API key, passed as a query parameter. Get one free at signup. |
Fields returned by the Bing Recipes Scraper API
{
"query": "chocolate chip cookies",
"results_count": 4,
"block": "carousel",
"results": [
{
"position": 1,
"title": "Easy chocolate chip cookies recipe",
"link": "https://www.goodto.com/recipes/jasmine-s-easy-choc-chip-biscuits",
"source": "Goodto.com",
"rating": 4,
"total_time": "30 min",
"thumbnail": "https://th.bing.com/th/id/OSK.9b107461f4991a7e9089106d151ee663?w=156&h=124&c=7&rs=1&qlt=80&o=6&cdv=1&pid=16.1",
"id": "9f6be56eadd568535b72fe5ac914097b",
"meta": "30 min · 224 cals · 20 servs"
},
{
"position": 2,
"title": "Best Chocolate Chip Cookies",
"link": "https://cooking.nytimes.com/recipes/1015819-chocolate-chip-cookies",
"source": "Nytimes.com",
"rating": 5,
"total_time": "1 hr 55 min",
"thumbnail": "https://th.bing.com/th/id/OSK.d39cc893915fbefa8f8402e6b2f0cd7d?w=156&h=124&c=7&rs=1&qlt=80&o=6&cdv=1&pid=16.1",
"id": "a8fba68e14f2063bf9c43d0b678839e3",
"meta": "1 hr 55 min · 22 cals · 18 servs"
}
]
} | Field | Type | Description |
|---|---|---|
query | string | The query that was searched, echoed back from your request. |
results_count | integer | Number of recipe results returned. |
block | string | Which block was parsed: carousel when Bing shows the recipe carousel, or organic_fallback when it does not. |
results | array | The recipe results, each with position, title, link, source, rating, total_time, and thumbnail. |
results[].link | string | The real recipe URL, from the card's data-pageUrl or decoded from Bing's redirect. |
results[].source | string | The publishing site, e.g. Goodto.com or Nytimes.com. |
results[].rating | number | The recipe rating as a number, e.g. 4 or 4.7, or null when not shown. |
results[].total_time | string | The total time parsed from the recipe meta line, e.g. 30 min, or null. |
results[].meta | string | The full meta line from the carousel card, e.g. 30 min · 224 cals · 20 servs. Carousel block only. |
What this data is good for
Recipe aggregation
Recipe app content
Rating and time comparison
Food SEO research
Meal planning tools
Source discovery
Why our Bing Recipes Scraper API is reliable
Send one food query and get the Bing recipe carousel back as validated JSON: title, source, rating, total time, thumbnail, and the real recipe link, parsed per card. When Bing declines to show the carousel for a query, we fall back to the organic recipe destinations and flag it in the block field, so the call always returns something useful, at a 2.6s median through rotating proxies with anti-bot handling and retries.
Carousel parsed to fields
Graceful organic fallback
Carousel triggered for you
Real recipe links
Ratings normalized
Anti-bot and proxy rotation
Choosing between the Bing Recipes Scraper API and the Bing API
| Our API | DIY (requests / headless) | Bing Web Search API (Azure) | |
|---|---|---|---|
| Recipe carousel as JSON | Parsed per card, one call | You parse rcp-mag-item yourself | No recipe block in the API |
| Fallback when absent | Organic recipe results returned | You handle the empty case | Not applicable |
| Availability | Live and maintained | Depends on your setup | Closed to new customers, sunsetting |
| Rating and total time | Parsed and normalized | Extra parsing per card | Not applicable |
| Setup | API key only | Proxies, headless browser, parsers | Azure account and resource keys |
| Anti-bot and proxies | Built in | You build and maintain it | Not applicable |
Straightforward pricing
| Plan | Price | Best for |
|---|---|---|
| Free | 1,000 requests | Testing and small jobs |
| Pro | $0.60 / 1k | Production workloads |
| Pay-as-you-go | $0.90 / 1k | Spiky or one-off volume |
Median response 2.6s. You only pay for successful requests.
FAQ
A Bing recipes scraper reads the recipes Bing shows for a food query and returns them in a structured format. Our Bing recipes scraper API takes a dish query and returns each recipe's title, source site, rating, total time, thumbnail, and real link as JSON from a single request, using Bing's inline recipe carousel when it is shown.
No. Bing's recipe carousel is query-dependent and only server-renders on the plain SERP when the query implies a recipe. We build the request to trigger it and append the word recipe when it is missing, but when Bing still does not show the carousel we fall back to the organic recipe results. The block field tells you which one you got: carousel or organic_fallback.
The carousel block returns richer cards with rating, total_time, and the full meta line for each recipe. The organic_fallback block returns the organic recipe destinations, with title, link, and source, but without carousel-only fields like rating and total_time, which come back null. Both give you real recipe links; the carousel just carries more metadata when Bing renders it.
For carousel results, we parse the total_time from the recipe meta line, for example pulling 30 min out of a line like 30 min · 224 cals · 20 servs, and also return the full meta string so you can read calories and servings. Fallback results do not include a meta line, so total_time is null there.
Yes. Carousel cards carry a data-pageUrl that points at the publisher's recipe, and we return that as the link; where it is missing we decode Bing's redirect to the real destination. Fallback results use the decoded organic link. Either way the link points at the source site's recipe rather than a bing.com link.
Scraping publicly visible recipe search results is generally treated as lower risk than scraping data behind a login. This is not legal advice: recipes and their photos are often under copyright, so you are responsible for respecting Bing's terms, the publishers' terms, and copyright. Collecting links and metadata to point users at the source recipes differs from copying the recipe text and images wholesale.