# Tool reference

> Every tool with its ID, price per result and input fields. Generated from the live tool catalog.

Each tool has an ID (used in `POST /api/v1/tools/{toolId}/runs`), a price in credits per result and a set of input fields. Send the input fields as the JSON body of the run. Fields marked required must be set; all others are optional or have the default shown.

This page is generated from the same tool catalog the API uses, so it always matches `GET /api/v1/tools`.

<ToolCatalog />

## Web Scraper (`scrape`)

Turn any public web page into clean, LLM-ready Markdown, raw HTML or JSON fields picked with CSS selectors. Optional JavaScript rendering, screenshots and an automatic residential-proxy fallback when a site blocks.

- Endpoint: `POST /api/v1/tools/scrape/runs`
- Price: 1 credit per result

| Field | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `url` | string | no |  | URL: The page to scrape. |
| `urls` | string[] | no |  | URLs: Several pages in one run (up to 20); one result per page. |
| `format` | "markdown" \| "html" \| "json" | no | `"markdown"` | Output format: markdown: clean, LLM-ready text of the page. html: the page HTML. json: the fields from `extract`. |
| `onlyMainContent` | boolean | no | `true` | Main content only: Markdown: drop navigation, cookie banners, sidebars and footers. |
| `extract` | object | no |  | Extraction rules: For format json: field name -> CSS selector, or {selector, attribute, all}. attribute reads e.g. href/src/content ("html" = inner HTML); all returns every match. |
| `renderJs` | boolean | no | `false` | Render JavaScript: Load the page in a headless browser first (for sites that build their content with JS). |
| `waitFor` | string | no |  | Wait for: With renderJs: a CSS selector to wait for, or a delay in milliseconds (e.g. 2000, max 15000). |
| `proxy` | "auto" \| "none" \| "residential" | no | `"auto"` | Proxy: auto: direct first, residential proxy only if the site blocks us. none: never a proxy. residential: always. |
| `country` | string | no |  | Country: Exit country for the residential proxy (two-letter code). |
| `timeoutMs` | integer | no | `20000` | Timeout (ms): Per page, for loading (and rendering). |
| `screenshot` | boolean | no | `false` | Screenshot: With renderJs: a PNG of the viewport, returned as a signed download URL (valid 7 days). |

## YouTube Transcripts (`youtube-transcripts`)

Transcripts of YouTube videos with timestamps, chapters, language choice and video metadata.

- Endpoint: `POST /api/v1/tools/youtube-transcripts/runs`
- Price: 1 credit per result

| Field | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `videos` | string[] | yes |  | Videos: YouTube video URLs (watch, youtu.be, shorts, embed, live) or 11-character video IDs. |
| `languages` | string[] | no | `[]` | Preferred languages: Language codes in order of preference, e.g. de, en, pt-BR. Empty: the original transcript. If none is available, the default transcript is returned with languageMatched = false. |
| `preferManual` | boolean | no | `true` | Prefer human-made captions: Use uploaded captions over auto-generated ones when both exist for a language. |
| `includeSegments` | boolean | no | `true` | Include timed segments: Adds the transcript split into segments with start and end time in seconds. |
| `includeMetadata` | boolean | no | `true` | Include video metadata: Adds title and channel. Views, duration, publish date and the language list are added when YouTube provides them. |
| `maxResults` | integer | no |  | Max results: Stop after this many transcripts. Empty: all videos. |

## Facebook Ads Library Scraper (`facebook-ads-library`)

Search the Facebook Ad Library by keyword or advertiser Page ID: ad text, images, videos, CTA, run dates and platforms. No login, no browser.

- Endpoint: `POST /api/v1/tools/facebook-ads-library/runs`
- Price: 1 credit per result

| Field | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `searches` | object[] | yes |  | Searches: One entry per keyword or advertiser. Each returns the first page of matching ads (see totalMatchingAds/hasMoreResults). |
| `maxResults` | integer | no |  | Max results: Stop after this many ads in total. Empty: all ads from all searches. |

## LinkedIn Jobs Scraper (`linkedin-jobs`)

Search LinkedIn job postings by keyword, location, date posted, work type, experience level and job type: title, company, location, full description, seniority, employment type and applicant count. No login, no browser.

- Endpoint: `POST /api/v1/tools/linkedin-jobs/runs`
- Price: 1 credit per result

| Field | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `searches` | object[] | yes |  | Searches: One entry per keyword/location combination. |
| `includeDescription` | boolean | no | `true` | Include full description: Fetch each job’s detail page for the full description, seniority, employment type, industries and applicant count. One extra request per job. |
| `maxResults` | integer | no |  | Max results: Stop after this many jobs in total across all searches. Empty: no extra cap. |

## Indeed Jobs Scraper (`indeed-jobs`)

Search Indeed job postings by keyword, job title, company, location and posted date: title, company, rating, salary, job type, benefits, the full description and the employer’s website and size. No login, no browser.

> Coming soon: the source site blocks requests from our servers, so runs are not reliable until proxy access is switched on.

- Endpoint: `POST /api/v1/tools/indeed-jobs/runs`
- Price: 1 credit per result

| Field | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `searches` | object[] | yes |  | Searches: One entry per search: keywords, job title, company, location and filters. |
| `includeDescription` | boolean | no | `true` | Include full description: Add the full job description text. Fetched in batches of 10 jobs per extra request, same price per job. |
| `includeCompanyDetails` | boolean | no | `true` | Include company website and size: Add the employer’s website, domain, industry, employee range, revenue range and headquarters from its Indeed company page (one extra request per distinct company, same price per job). |
| `maxResults` | integer | no |  | Max results: Stop after this many jobs in total across all searches. Empty: no extra cap. |

## Amazon Product Search (`amazon-products`)

Search amazon.com by keyword and get product listings: title, price, list price, rating, review count, image, badges (Amazon’s Choice / Best Seller) and URL. No login, no browser.

> Runs through residential network access and is switched on only while our automatic checks pass. Live state: /status. A paused tool answers 503 TOOL_UNAVAILABLE and charges nothing.

- Endpoint: `POST /api/v1/tools/amazon-products/runs`
- Price: 1 credit per result

| Field | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `searches` | object[] | yes |  | Searches: One entry per keyword search. |
| `maxResults` | integer | no |  | Max results: Stop after this many products in total across all searches. Empty: no extra cap. |

## Amazon Product Reviews (`amazon-reviews`)

Get the reviews embedded on an amazon.com product page by ASIN or URL: rating, title, date, verified purchase, helpful votes and full text. No login, no browser.

> Runs through residential network access and is switched on only while our automatic checks pass. Live state: /status. A paused tool answers 503 TOOL_UNAVAILABLE and charges nothing.

- Endpoint: `POST /api/v1/tools/amazon-reviews/runs`
- Price: 1 credit per result

| Field | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `products` | object[] | yes |  | Products: One entry per product (ASIN or amazon.com product URL). |
| `maxResults` | integer | no |  | Max results: Stop after this many reviews in total across all products. Empty: no extra cap. |

## Reddit Posts, Comments & Search (`reddit`)

Read subreddit listings, run searches or fetch one post with its comments: title, author, text/body, link, created date and permalink. No login, no browser.

> Runs through residential network access and is switched on only while our automatic checks pass. Live state: /status. A paused tool answers 503 TOOL_UNAVAILABLE and charges nothing.

- Endpoint: `POST /api/v1/tools/reddit/runs`
- Price: 1 credit per result

| Field | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `requests` | object[] | yes |  | Requests: One entry per subreddit listing, search or single post. |
| `includeComments` | boolean | no | `false` | Include comments for subreddit/search posts: Fetch each found post’s top comments too (one extra request per post, capped by that request’s "Max comments"). kind=post always includes comments regardless of this flag. |
| `maxResults` | integer | no |  | Max results: Stop after this many posts+comments in total across all requests. Empty: no extra cap. |

## Zillow Listings Scraper (`zillow`)

Search Zillow for-sale listings by city/location: price, beds, baths, square footage, Zestimate, home type and status. No login, no browser.

> Runs through residential network access and is switched on only while our automatic checks pass. Live state: /status. A paused tool answers 503 TOOL_UNAVAILABLE and charges nothing.

- Endpoint: `POST /api/v1/tools/zillow/runs`
- Price: 1 credit per result

| Field | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `locations` | object[] | yes |  | Locations: One entry per city/location to search. |
| `maxResults` | integer | no |  | Max results: Stop after this many listings in total across all locations. Empty: no extra cap. |

## Google Maps Leads Scraper (`maps-leads`)

Find businesses on Google Maps by type and location (optionally within a radius): name, address, phone, website, rating, reviews, categories and opening hours, plus emails (with the page they were found on), phone numbers and social profiles from each business website. One row per company. No login, no browser.

- Endpoint: `POST /api/v1/tools/maps-leads/runs`
- Price: 1 credit per result

| Field | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `searches` | object[] | yes |  | Searches: One entry per business type + location combination. |
| `enrichContacts` | boolean | no | `true` | Find emails and social profiles: Visit each business website (homepage plus contact, imprint or privacy pages when needed) to collect email addresses, phone numbers and Facebook, Instagram, LinkedIn, X, YouTube, TikTok and Pinterest profiles. |
| `maxContactPages` | integer | no | `3` | Website pages per business: Homepage plus up to this many minus one contact, imprint or privacy pages, only while no address of the business itself has been found (an agency or platform address alone does not count). |
| `language` | string | no | `"en"` | Language of categories, opening hours and descriptions, e.g. "en", "de", "fr". |
| `countryCode` | string | no |  | Country bias: Two-letter country code that biases ambiguous place names, e.g. "us" or "de". Empty: none. |
| `dedupe` | boolean | no | `true` | Skip duplicates across searches: Return each business only once even when several searches find it. |
| `onePerCompany` | boolean | no | `true` | One row per company: Skip a business whose website domain or phone number was already returned (branches of one company, double listings). Shared hosts like Facebook pages or booking platforms never count as the same company. |
| `maxResults` | integer | no |  | Max results: Stop after this many businesses in total across all searches. Empty: no extra cap. |

## Bing & DuckDuckGo SERP API (`serp`)

Search results from Bing and DuckDuckGo as structured JSON: organic results with position, title, URL and snippet, Bing ads and related searches, result count, pagination, country and language. No browser, no Google.

- Endpoint: `POST /api/v1/tools/serp/runs`
- Price: 1 credit per result

| Field | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `queries` | string[] | yes |  | Search queries: One search per entry, exactly as you would type it into the search box. Operators like site: work. |
| `engine` | "bing" \| "duckduckgo" | no | `"bing"` | Search engine: Bing returns organic results, ads, related searches and the result count. DuckDuckGo returns organic results; its related searches come from DuckDuckGo’s own query suggestions and it shows no ads on this route. |
| `country` | string | no |  | Country: Two-letter country code for the result market, e.g. "us", "gb", "de". Empty: the engine picks the market (Bing by location, DuckDuckGo "All regions"). |
| `language` | string | no |  | Language: Interface and result language, e.g. "en", "de", "fr". For DuckDuckGo it picks between a country’s regions (e.g. Canada + fr). |
| `maxPagesPerQuery` | integer | no | `1` | Pages per query: How many result pages to fetch for each query (about 10 organic results per page). |
| `includeRelatedSearches` | boolean | no | `true` | Related searches: Include related searches. Free on Bing (same page); one extra request per query on DuckDuckGo. |
| `maxResults` | integer | no |  | Max result pages: Stop after this many result pages in total across all queries. Empty: no extra cap. |

## Glassdoor Jobs Scraper (`glassdoor-jobs`)

Search Glassdoor job listings by keyword and location: title, company, company rating, location, salary range, posted age, Easy Apply flag, description snippet and skills. No login, no browser.

> Coming soon: the source site blocks requests from our servers, so runs are not reliable until proxy access is switched on.

- Endpoint: `POST /api/v1/tools/glassdoor-jobs/runs`
- Price: 1 credit per result

| Field | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `searches` | object[] | yes |  | Searches: One entry per keyword/location combination, each with its own filters. |
| `maxResults` | integer | no |  | Max results: Stop after this many jobs in total across all searches. Empty: no extra cap. |

## Yelp Business & Reviews Scraper (`yelp`)

Search Yelp businesses by keyword and location or scrape business URLs: name, rating, review count, categories, price, phone, website, address, coordinates, opening hours and optional full review texts. No login, no browser.

> Coming soon: the source site blocks requests from our servers, so runs are not reliable until proxy access is switched on.

- Endpoint: `POST /api/v1/tools/yelp/runs`
- Price: 1 credit per result

| Field | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `searches` | object[] | no | `[]` | Searches: One entry per search: a search term and the location to search in. |
| `businessUrls` | string[] | no | `[]` | Business URLs: Yelp business pages to scrape directly, e.g. https://www.yelp.com/biz/lou-malnatis-pizzeria-chicago (the part after /biz/ also works on its own). |
| `maxBusinessesPerSearch` | integer | no | `10` | Max businesses per search: How many businesses to return per search, in Yelp's own ranking (sponsored results excluded). Yelp returns at most 25 per search, so use more specific terms or locations for more. |
| `maxReviewsPerBusiness` | integer | no | `0` | Max reviews per business: Full review texts to include with every business (0 = none, up to 100). Reviews are loaded 20 at a time. |
| `reviewsSort` | "relevance" \| "newest" \| "oldest" \| "highest_rated" \| "lowest_rated" \| "elites" | no | `"relevance"` | Review order: Order of the reviews: Yelp's recommended order, newest, oldest, highest or lowest rated, or Elite reviewers first. |
| `reviewsLanguage` | string | no | `"en"` | Review language: Two-letter language code of the reviews to load, e.g. "en", "es", "fr". |
| `maxResults` | integer | no |  | Max businesses: Stop after this many businesses in total. Empty: no extra cap. |

## Idealista Scraper (`idealista`)

Scrape idealista.com property listings for any Spanish city, district or search URL: price, price drops, rooms, size, floor, lift, parking, agency, coordinates, photos. Homes, offices, premises, garages, land and rooms, for sale or rent.

> Coming soon: the source site blocks requests from our servers, so runs are not reliable until proxy access is switched on.

- Endpoint: `POST /api/v1/tools/idealista/runs`
- Price: 1 credit per result

| Field | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `searches` | string[] | yes |  | Locations or search URLs: One entry per search. Either a location as it appears in idealista.com URLs ("madrid-madrid", "barcelona-barcelona", "madrid-provincia", "madrid/centro"), combined with the operation and property type below, or a full idealista.com search URL copied from your browser with all filters applied, e.g. https://www.idealista.com/alquiler-viviendas/barcelona-barcelona/con-precio-hasta_1500/. A URL keeps its own operation, type, filters and sort order. |
| `operation` | "sale" \| "rent" | no | `"sale"` | Operation: For location entries only: properties for sale or for rent. |
| `propertyType` | "homes" \| "new-homes" \| "offices" \| "premises" \| "garages" \| "land" \| "storage-rooms" \| "buildings" \| "rooms" | no | `"homes"` | Property type: For location entries only: homes (flats and houses), new-homes, offices, premises, garages, land, storage-rooms, buildings, or rooms (rent only). |
| `maxResultsPerSearch` | integer | no | `90` | Max listings per search: Stops paginating a search after this many listings. idealista shows 30 listings per page; the maximum here is 1800 (60 pages). |
| `maxResults` | integer | no |  | Max listings in total: Stop after this many listings across all searches. Empty: no extra cap. |

## Threads Scraper (`threads`)

Scrape public Threads posts by keyword search, profile or post URL: text, author, likes, replies, reposts, images, videos, links, mentions, profile details and the first page of replies. No login, no browser.

- Endpoint: `POST /api/v1/tools/threads/runs`
- Price: 1 credit per result

| Field | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `searchQueries` | string[] | no | `[]` | Search keywords: Keywords or #hashtags to search on Threads. Each search returns the top ~20 matching threads (what Threads shows without an account). |
| `usernames` | string[] | no | `[]` | Profiles: Usernames or profile URLs. Returns the profile details and its latest public threads (Threads shows ~5 without an account). |
| `postUrls` | string[] | no | `[]` | Post URLs: Links to single Threads posts. Returns the post and, if enabled, its replies. |
| `includeReplies` | boolean | no | `true` | Include replies: For post URLs: also return the author’s follow-up posts and the first page of replies (~10, what Threads shows without an account). |
| `maxResults` | integer | no |  | Max results: Stop after this many posts in total. Empty: no extra cap. |

## Website Contact Scraper (`website-contacts`)

Get email addresses, phone numbers and Facebook, Instagram, LinkedIn, X, YouTube, TikTok and Pinterest profiles from a list of company websites: homepage plus contact and imprint pages. No login, no browser.

- Endpoint: `POST /api/v1/tools/website-contacts/runs`
- Price: 1 credit per result

| Field | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `websites` | string[] | yes |  | Websites: Company domains or website URLs, one per line, e.g. "kaercher.com" or "www.example-bakery.de/kontakt". One result per website; duplicates are skipped. |
| `maxPagesPerWebsite` | integer | no | `3` | Pages per website: Homepage plus up to this many minus one contact, imprint or about pages. Extra pages are only visited while an email or a phone number is still missing. |
| `maxResults` | integer | no |  | Max results: Stop after this many websites. Empty: all of them. |

## LinkedIn Company Scraper (`linkedin-company`)

Get public LinkedIn company data from a company URL or website domain: industry, size, employees on LinkedIn, headquarters and address, all locations, website, type, founding year, specialties, followers, similar companies and recent posts. No login.

> Runs through residential network access and is switched on only while our automatic checks pass. Live state: /status. A paused tool answers 503 TOOL_UNAVAILABLE and charges nothing.

- Endpoint: `POST /api/v1/tools/linkedin-company/runs`
- Price: 1 credit per result

| Field | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `companies` | string[] | yes |  | Companies: LinkedIn company or showcase page URLs (linkedin.com/company/<name>) or company websites/domains (e.g. "hubspot.com"), one per line. A domain is matched to its LinkedIn page through the link on its homepage. One result per company; duplicates are skipped. |
| `includePosts` | boolean | no | `true` | Include recent posts: Add the latest posts shown on the public page (up to about 10): text, date, likes and link. |
| `maxResults` | integer | no |  | Max results: Stop after this many companies. Empty: all of them. |
