Skip to main content
  • Query: 3–2000 characters. Outside that range the POST is 422; whitespace only is 400.
  • Target: 1–50 results. Omitting the field leaves the server default of 50, which is the most expensive setting, so send a value you actually want.
  • The server repeats the funnel for at most 6 rounds, then stops and sets met from what it actually found.
  • speed: "fast" reads fewer pages than advanced. Send fast unless you want the deeper pass. Omitting speed selects advanced.
  • relax: true is the default. Set false to keep every filter as first written.
  • sites is optional. When it names websites, every search in the run stays on those sites. Leave it empty to search the web. At most 20 domains.
  • Every run carries a deadline, published as deadlineAt and one hour out on the hosted service. A run still going then is ended by the server and lands as interrupted with stopReason: "deadline".
  • GET /v1/searches returns your 50 most recent runs. There are no paging parameters.
  • Events expire 24 hours after they are written, which is also how long result keeps answering on a finished run.
  • An API key’s name is 1–100 characters.

Concurrency

Nothing caps how many searches you run at once. The bound is money: each one holds 5.00ofavailablebalanceforitslifetime,sostartingfiveatonceneeds5.00 of available balance for its lifetime, so starting five at once needs 25.00 free, and the next is refused with a 402 until one of them lands or you top up. There is no per-account rate limit and no “already running a search” refusal: that was a property of the old one-run-per-connection transport and it is gone. Streaming does not consume a slot either. Any number of readers can stream the same run, and a run keeps going whether or not anyone is reading it.