Skip to main content
The Olostep /v1/searches endpoint lets you search the web with a natural language query and get back a deduplicated list of relevant links with titles and descriptions.
  • Send a query in plain English
  • Get back structured links from across the web
  • Optionally scrape every returned URL in one round-trip and embed markdown_content / html_content directly into the response
  • Filter by domain, control the result count, and bound the scraping wallclock
It will search for the query semantically across the web and return results. For API details, see the Search Endpoint API Reference.

Installation

Basic usage

Send a natural language query and receive a list of relevant links.

Request parameters

Limiting the number of results

Filtering by domain

include_domains narrows results to a whitelist; exclude_domains filters out unwanted sources. They can be combined.

scrape_options

Pass scrape_options to scrape every returned URL in parallel and embed the rendered content directly on each link. This saves a round-trip per result vs. calling /v1/searches and /v1/scrapes separately.

Behavior

  • All links are scraped in parallel. The timeout bounds the whole batch, not each individual link.
  • Per-link scrape failures (network errors, individual page timeouts) leave that link’s markdown_content / html_content as null while other links return normally.
  • If the global timeout elapses before all scrapes finish, the search responds immediately with the links it has — already-completed scrapes keep their content; in-flight ones come back with null content.
  • For reddit.com/.../comments/... URLs, the request is automatically routed through the @olostep/reddit-post parser and the structured JSON is rendered into clean markdown + basic HTML
  • If the combined inline content exceeds 9MB, content fields are nulled, result.size_exceeded is set to true, and you can fetch the full payload from result.json_hosted_url.

Example with scraping

Response

You will receive a search object in response. The search object contains an id, your original query, credits_consumed, and a result with a list of links.
Each link in result.links contains: The full result is also available as a hosted JSON file at result.json_hosted_url — useful when result.size_exceeded is true. GET /v1/searches/{search_id} returns whatever was persisted at search time, including any scraped content. It’s a pure idempotent read — no re-scraping, no re-billing. Older searches without scrape_options simply have no per-link content fields.
See Get Search for full details.

Pricing

Each search costs 5 credits for the search itself. When scrape_options is provided, each scraped page is billed at the standard /v1/scrapes rate (typically 1 credit per page; some parsers cost more). The total is returned in credits_consumed. Examples: