Skip to content

Bulk queries

Search → Bulk takes a list of queries and runs them through POST /v1/bulk, 50 to a request, one request after another until the list is done. Results arrive batch by batch and can be exported together.

Paste queries into the text area, one per line. Blank lines are dropped.

Or drop a CSV file onto the page. The file is parsed in your browser and nothing is uploaded; only the values of the column you choose are ever sent. When the file has more than one column, pick the one holding the query and say whether the first row is a header. The dashboard guesses at the header from the first row’s shape, and the toggle lets you overrule it. Files are capped at 5 MB.

Every query in the run shares the same search engine, country and language. Per-row overrides (a different target or num for one row) are an API feature; see the POST /v1/bulk reference.

The list is split into batches of 50. Each batch is one HTTP request and one rate-limit hit, whatever it carries, so a live key’s 60 requests a minute covers up to 3,000 queries a minute. The progress bar counts batches; you can cancel between batches, and the rows already answered stay on screen.

Each row is independent. A row that fails validation or fails upstream is an error row with a message, never a failed run. The batch answers 200 whenever the request itself was accepted, even when every row failed.

One credit per row that was dispatched to the search provider, including rows that came back upstream_error or upstream_timeout. Rows the validator rejected, rows that never started, and rows that failed with internal_error cost nothing.

Download CSV and Copy CSV produce the same file: one line per organic result with the columns query, position, title, url, domain, snippet. An error row becomes a single line whose last column reads error: <message>. Clear empties the run.