# DuckDuckGo and Bing Search Results Scraper

> DuckDuckGo search scraper with Bing too: get position, title, real URL and snippet for your keywords. Compare both engines in one run. No API key.

URL: https://cliqtomedia.com/actors/duckduckgo-bing-search/

Category: Search, SEO & ads · Status: coming soon · Apify profile: https://apify.com/cliqtomedia?fpr=cliqto

Add keywords and get DuckDuckGo and Bing results as rows. Each row has the position, title, real URL and snippet. You can compare both engines in one run.

## How to use it: 3 steps

1. **Follow us on Apify.** The tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `apify` in Search queries. Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does

Add search queries, pick DuckDuckGo, Bing or both, and get the public search results as one row per result: position, title, real website URL, snippet and domain.

- position in the engine's result list (continues across pages);
- title, snippet (`description`) and the real website URL (Bing's and DuckDuckGo's redirect links are decoded);
- displayed URL and domain;
- the engine, query, region and page it came from.

### Good for

- Check where a site appears on DuckDuckGo and Bing for a keyword list.
- Collect the top 10–100 URLs for a topic for SEO, content or lead research.
- Give an AI agent a cheap web search with clean rows.
- Compare DuckDuckGo and Bing results for the same queries.

### Not a good fit

- Only organic web results. Ads, news, images, videos, maps, "People also ask" and AI answers are not returned.
- Results are not personalised and not tied to a city.
- Bing with the `site:` operator returns only its first page (about 10 results).
- The engines sometimes block automated traffic. The Actor changes IP addresses and retries, but it never solves CAPTCHAs (see Troubleshooting).

## Price

Prices will be shown after release.

## Questions

### Do I get ads or news results?

No. You get organic web results only. Ads, news, images, maps and AI answers are not included.

### Why are the links real website URLs?

Both engines use redirect links. The tool decodes them, so you get the page address itself.

### How many results can I get per keyword?

Up to 100 results per query and engine. A run can have up to 500 queries.

### Do I pay for blocked pages?

No. Error rows and blocked or retried pages are free.

### Do I need a DuckDuckGo or Bing account or API key?

No. The Actor reads public results pages without login or cookies of any account.

### Is the order the same as on duckduckgo.com or bing.com?

`position` follows the order on the results pages for the chosen region. DuckDuckGo uses its simple "lite" page, which can differ a little from the full page.

### How do I search only one site?

Add the operator to the query, for example `site:apify.com scraper`. On Bing you get the first page only.

## Data fields

- `status` (string): complete = search result; not_found = the engine returned no results for this query (one charged page); error = the search failed after retries (free).
- `engine` (string): Search engine of this row: duckduckgo or bing.
- `query` (string): Your search query.
- `position` (integer): Place in the engine's results for this query, from 1, continuing across pages; null on not_found/error rows.
- `title` (string): Result title.
- `url` (string): Real website URL (decoded from the engine's redirect link).
- `displayedUrl` (string): Address as the engine shows it under the title.
- `domain` (string): Host of the URL without www.
- `description` (string): Snippet text.
- `page` (integer): Engine result page the row came from (1 = first page).
- `region` (string): Region code of the search, e.g. us-en.
- `searchUrl` (string): Search page address. For DuckDuckGo pages after the first (loaded by form submit) this is the first page address.
- `errorCode` (string): Machine-readable reason on error rows, e.g. SOURCE_BLOCKED or UNRELATED_RESULTS (only unrelated results; not charged); null otherwise.
- `statusReason` (string): Plain-language explanation on not_found and error rows.
- `fetchedAt` (string): When the page was loaded (ISO 8601, UTC).

## Input settings

- `queries` (array, required): What to search, one query per line, e.g. "best running shoes". Operators such as site:example.com or "exact phrase" are passed as typed. Up to 500 queries, each up to 256 characters; duplicates are removed.
- `engine` (string): DuckDuckGo, Bing, or both (every query is searched on each engine; rows carry the engine name). Default: DuckDuckGo.
- `region` (string): Country and language of the results. Bing outside the United States is searched through an Apify residential IP in that country (slower). "No region" is DuckDuckGo-only; Bing then searches as United States.
- `maxResults` (integer): Maximum results per query and engine (1–100). The Actor opens further result pages until it has this many or the engine has no more. You pay per loaded results page that gave rows (usually about 10 results); a search with no results is one charged page.
- `safeSearch` (string): Safe search level of the engine. Default: moderate.
- `timeRange` (string): Only pages the engine dates within this period. Default: any time.
- `proxyConfiguration` (object): Leave empty: the Actor connects directly and switches to Apify residential proxy in the chosen country by itself when an engine blocks it. Set your own proxy group or URLs to turn this off and use only yours. The Actor never solves CAPTCHAs.

## Step by step on Apify

1. Open the Input tab.
2. In Search queries (`queries`), keep the prefilled `apify` or add your own queries, one per line.
3. Keep Search engine `DuckDuckGo` (default), or choose `Bing` or `Both`.
4. Keep Region `United States (English)` or choose another one.
5. Keep Results per query (`maxResults`) at `10` (prefill), or set up to `100`.
6. Click Start.
7. Open the Output tab and check `engine`, `position`, `title` and `url`.

## Use cases

| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Rank check on two engines | `queries`, `engine: both`, `region` | result row | `engine`, `query`, `position`, `domain` | Schedule + Google Sheets or API |
| Topic research | `queries`, `maxResults: 50` | result row | `title`, `url`, `description` | Export CSV / JSON |
| Web search for AI agents | `queries`, `maxResults: 5` | result row | `title`, `url`, `description` | MCP or API |
| Fresh pages only | `queries`, `timeRange: week` | result row | `url`, `description` | Webhook or Slack |

## Tips

- Pick a region to get results for one country.
- Use the time range filter to find fresh pages only.
- Split very long keyword lists into several runs.

## Limits



- A search with no results costs one page: the engine was asked and answered.
- `error` rows and retried or blocked pages are free. This includes queries answered only with results unrelated to the query (`UNRELATED_RESULTS`).
- If an engine answers nothing usable for 90 seconds (timeouts, errors or blocks), the Actor stops that engine, so a broken engine never makes a run expensive.
- If you set a maximum charge for the run, the Actor stops before it, keeps the rows and ends with status `CAPPED`.
- Up to 500 queries and 100 results per query and engine in one run.
- 40 queries × 100 results on both engines (8,000 rows) took about 23 minutes in tests. After 3,600 seconds the run stops with status `CAPPED` and keeps all rows; split bigger lists across runs.
- The engine decides how many results a query has; some queries end before `maxResults`.
- Bing outside the United States is slower, because it goes through a residential IP in that country.

## Sample result

```json
{
  "status": "complete",
  "engine": "duckduckgo",
  "query": "apify",
  "position": 1,
  "title": "Apify: Marketplace of ready-to-run tools for AI",
  "url": "https://apify.com/",
  "displayedUrl": "apify.com",
  "domain": "apify.com",
  "description": "Apify is a marketplace of ready-to-run tools for AI. Get real-time web data, track competitors, generate leads, monitor social media, and integrate your apps and agents.",
  "page": 1,
  "region": "us-en",
  "searchUrl": "https://lite.duckduckgo.com/lite/?q=apify&kl=us-en",
  "errorCode": null,
  "statusReason": null,
  "fetchedAt": "2026-10-15T05:44:38.881Z"
}
```

## Use cases with this tool

- [SEO data without a big suite](https://cliqtomedia.com/actors/use-cases/seo-research/): Collect keyword ideas and check your pages and your rivals' pages. Search results and trends coming soon.

## Similar tools

- [Google Autocomplete Scraper](https://cliqtomedia.com/actors/google-autocomplete-scraper/)
- [Website Metadata & Open Graph Scraper](https://cliqtomedia.com/actors/website-metadata-open-graph-scraper/)
- [Domain WHOIS (RDAP) & DNS Lookup, No Login](https://cliqtomedia.com/actors/domain-whois-dns-lookup/)
- [Website Screenshot & PDF Generator: Full Page & Mobile](https://cliqtomedia.com/actors/website-screenshot-pdf/)
- [Website JSON-LD Structured Data Scraper](https://cliqtomedia.com/actors/website-jsonld-structured-data-scraper/)
- [XML Sitemap URLs Extractor](https://cliqtomedia.com/actors/xml-sitemap-urls-extractor/)
