# Oxylabs Web Scraper API — Orthogonal API

> Pay-per-use API on Orthogonal. Each call is billed to your Orthogonal balance.
> Base API: `https://api.orthogonal.com/v1/run` · [llms.txt](https://orthogonal.com/llms.txt) · [browse all APIs](https://orthogonal.com/discover)

Real-time web scraping through Oxylabs. Scrape any public URL, or use dedicated scrapers for Google (Search, AI Mode, Shopping search and product details, Trends), Amazon (products, search, offers, sellers, best sellers), Walmart, eBay, Etsy, AliExpress, Best Buy, Costco, Target and YouTube (search, video metadata, subtitles, channels, autocomplete). Oxylabs handles proxies, retries, CAPTCHAs and JavaScript rendering, and returns HTML, Markdown or parsed JSON depending on the target. Pricing per call: Amazon $0.0006, Google $0.0012, other targets and any URL $0.00138, and $0.00162 with JavaScript rendering, including pages Oxylabs renders automatically. You're billed whenever a page comes back, including a site's own 404 or error page. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP payments are taken up front and not refunded.

**Verified:** no

## Access

**Run API:** `POST https://api.orthogonal.com/v1/run`
**Auth:** `Authorization: Bearer $ORTHOGONAL_API_KEY`
Get an API key at https://orthogonal.com/dashboard/settings/api-keys

Every call goes through the unified Run API: send the API `slug`, the endpoint `path`, and the `query`/`body` parameters. The response is `{ "success": true, "price": "<usd>", "data": { ... } }`.

## Endpoints

### Google Shopping Search

Google Shopping product listings for a query, one page per call, with prices, merchants and ratings. To get product tokens for /google/shopping-product, send render "html" and parse true; tokens are in results.organic[].token. Costs $0.0012 per call, or $0.00162 with JavaScript rendering. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /google/shopping-search`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/search-engines/google/shopping/shopping-search

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Product search keyword. |
| `parse` | boolean | No | Return structured JSON instead of raw HTML when true. Recommended. |
| `geo_location` | string | No | Location to localize results, e.g. "United States", "New York,New York,United States", or a ZIP code. |
| `locale` | string | No | Interface language (Accept-Language), e.g. en-us, de-de. |
| `start_page` | integer | No | Page number to fetch. Each call returns one page; paginate by incrementing. |
| `render` | string | No | Set to "html" for JavaScript rendering (needed to get product tokens). Billed at the rendering rate ($0.00162). |
| `user_agent_type` | string | No | Device type: desktop (default), mobile, tablet, or a variant: mobile_ios, mobile_android, tablet_ios, tablet_android. |
| `context` | array | No | Extra options as an array of {"key": ..., "value": ...} objects. Supported keys: sort_by (r relevance, rv review score, p price ascending, pd price descending), min_price, max_price, nfpr (true disables autocorrect). |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/google/shopping-search","body":{"query":"<string>","parse":"<boolean>","geo_location":"<string>","locale":"<string>","start_page":"<integer>","render":"<string>","user_agent_type":"<string>","context":"<array>"}}'
```

### YouTube Search

YouTube search results (up to 20) for a query: videos, channels, playlists and movies, with filters. Costs $0.00138 per call, or $0.00162 with JavaScript rendering. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /youtube/search`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/video-and-social-media/youtube/search

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Search term. |
| `geo_location` | string | No | Country to search from, e.g. "United States". |
| `upload_date` | string | No | today, last_hour, this_week, this_month, this_year. |
| `type` | string | No | video, channel, playlist, movie. |
| `duration` | string | No | <4, 4-20 or >20 (minutes). |
| `sort_by` | string | No | relevance (default), rating, view_count, upload_date. |
| `hd` | boolean | No | Only return HD videos. |
| `4k` | boolean | No | Only return 4K videos. |
| `hdr` | boolean | No | Only return HDR videos. |
| `360` | boolean | No | Only return 360-degree videos. |
| `3d` | boolean | No | Only return 3D videos. |
| `vr180` | boolean | No | Only return VR180 videos. |
| `live` | boolean | No | Only return live streams. |
| `subtitles` | boolean | No | Only return videos with subtitles/closed captions. |
| `creative_commons` | boolean | No | Only return Creative Commons videos. |
| `location` | boolean | No | Only return videos with a location tag. |
| `purchased` | boolean | No | Only return purchased content. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/youtube/search","body":{"360":"<boolean>","query":"<string>","geo_location":"<string>","upload_date":"<string>","type":"<string>","duration":"<string>","sort_by":"<string>","hd":"<boolean>","4k":"<boolean>","hdr":"<boolean>","3d":"<boolean>","vr180":"<boolean>","live":"<boolean>","subtitles":"<boolean>","creative_commons":"<boolean>","location":"<boolean>","purchased":"<boolean>"}}'
```

### Google Trends Explore

Google Trends Explore data for a keyword: interest over time, by region, and related topics and queries. Costs $0.0012 per call, or $0.00162 with JavaScript rendering. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /google/trends-explore`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/search-engines/google/trends-explore

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Keyword or phrase to analyze. |
| `geo_location` | string | No | 2-letter ISO country code, e.g. US. Omit for worldwide. |
| `user_agent_type` | string | No | Device type: desktop (default), mobile, tablet, or a variant: mobile_ios, mobile_android, tablet_ios, tablet_android. |
| `context` | array | No | Extra options as an array of {"key": ..., "value": ...} objects. Supported keys: search_type (web_search, image_search, google_shopping, youtube_search), date_from and date_to (YYYY-MM-DD, from 2004-01-01), category_id. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/google/trends-explore","body":{"query":"<string>","geo_location":"<string>","user_agent_type":"<string>","context":"<array>"}}'
```

### Amazon Search

Amazon search results for a keyword, one page per call, with prices, ratings, sponsored flags and more. Costs $0.0006 per call, or $0.00162 with JavaScript rendering. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /amazon/search`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/e-commerce/amazon/search

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Search keyword or phrase. |
| `parse` | boolean | No | Return structured JSON instead of raw HTML when true. Recommended. |
| `domain` | string | No | Amazon marketplace TLD, e.g. com (default), co.uk, de, fr, co.jp. |
| `geo_location` | string | No | Deliver-to location: a ZIP/postal code in the marketplace country (e.g. 10001 on com) or a 2-letter country code (e.g. DE). |
| `locale` | string | No | Interface language, e.g. en_US. Must be supported by the marketplace or the request is rejected. |
| `start_page` | integer | No | Page number to fetch. Each call returns one page; paginate by incrementing. |
| `render` | string | No | Set to "html" for JavaScript rendering, or "png" for a screenshot. Billed at the rendering rate ($0.00162). |
| `user_agent_type` | string | No | Device type: desktop (default), mobile, tablet, or a variant: mobile_ios, mobile_android, tablet_ios, tablet_android. Note: parse=true only works with desktop on Amazon. |
| `context` | array | No | Extra options as an array of {"key": ..., "value": ...} objects. Supported keys: sort_by (most_recent, price_low_to_high, price_high_to_low, featured, average_review, bestsellers), min_price and max_price (in cents), category_id, merchant_id, refinements, currency. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/amazon/search","body":{"query":"<string>","parse":"<boolean>","domain":"<string>","geo_location":"<string>","locale":"<string>","start_page":"<integer>","render":"<string>","user_agent_type":"<string>","context":"<array>"}}'
```

### Google Search

Google web search results (SERP) for a query, one page per call. Use parse=true for structured organic results, ads, People Also Ask and more. Costs $0.0012 per call, or $0.00162 with JavaScript rendering. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /google/search`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/search-engines/google/search/web-search

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Search keyword or phrase. |
| `parse` | boolean | No | Return structured JSON instead of raw HTML when true. Recommended. |
| `geo_location` | string | No | Location to localize results, e.g. "United States", "New York,New York,United States", or a ZIP code. |
| `locale` | string | No | Interface language (Accept-Language), e.g. en-us, de-de. |
| `start_page` | integer | No | Page number to fetch. Each call returns one page; paginate by incrementing. |
| `limit` | integer | No | Results per page (default 10, max 100). |
| `render` | string | No | Set to "html" for JavaScript rendering, or "png" for a screenshot. Billed at the rendering rate ($0.00162). |
| `user_agent_type` | string | No | Device type: desktop (default), mobile, tablet, or a variant: mobile_ios, mobile_android, tablet_ios, tablet_android. |
| `context` | array | No | Extra options as an array of {"key": ..., "value": ...} objects. Supported keys: tbm (isch images, nws news, vid videos, lcl local, bks books), tbs (advanced filters such as qdr:d for the past day), udm (search tab), filter (0 to include similar results), safe_search (true/false), nfpr (true disables autocorrect). limit_per_page is not supported. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/google/search","body":{"query":"<string>","parse":"<boolean>","geo_location":"<string>","locale":"<string>","start_page":"<integer>","limit":"<integer>","render":"<string>","user_agent_type":"<string>","context":"<array>"}}'
```

### YouTube Subtitles

Subtitles and closed captions for a YouTube video by ID. Costs $0.00138 per call, or $0.00162 with JavaScript rendering. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /youtube/subtitles`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/video-and-social-media/youtube/subtitles

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | YouTube video ID, e.g. c4P_YuNnZ7U. |
| `context` | array | No | Extra options as an array of {"key": ..., "value": ...} objects. Supported keys: language_code (e.g. en), subtitle_origin (auto_generated or uploader_provided; omit for both). Example: [{"key":"language_code","value":"en"}]. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/youtube/subtitles","body":{"query":"<string>","context":"<array>"}}'
```

### Walmart Search

Walmart product search results for a keyword, one page per call, with prices, ratings, sellers, fulfillment options and filters. Costs $0.00138 per call, or $0.00162 with JavaScript rendering. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /walmart/search`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/e-commerce/walmart/search

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Search keyword or phrase. |
| `parse` | boolean | No | Return structured JSON instead of raw HTML when true. Recommended. |
| `domain` | string | No | Walmart site: com (default), ca, com.mx, co.cr. Prices come in that site's currency. |
| `start_page` | integer | No | Page number to fetch. Each call returns one page; paginate by incrementing. |
| `store_id` | string | No | Walmart store number as a string, e.g. "3520". |
| `delivery_zip` | string | No | Delivery ZIP/postal code as a string, e.g. "90210". The nearest store is used. |
| `fulfillment_type` | string | No | pickup (with store_id), delivery (with delivery_zip) or shipping. |
| `fulfillment_speed` | string | No | today, tomorrow, 2_days or anytime. |
| `sort_by` | string | No | best_match (default), price_low, price_high, best_seller. |
| `min_price` | integer | No | Lowest price, whole number in the site's currency. |
| `max_price` | integer | No | Highest price, whole number in the site's currency. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/walmart/search","body":{"query":"<string>","parse":"<boolean>","domain":"<string>","start_page":"<integer>","store_id":"<string>","delivery_zip":"<string>","fulfillment_type":"<string>","fulfillment_speed":"<string>","sort_by":"<string>","min_price":"<integer>","max_price":"<integer>"}}'
```

### Google AI Mode

Ask Google AI Mode a question and get the generated answer with its cited sources. Rendering is always on. Costs $0.00162 per call. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /google/ai-mode`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/search-engines/google/ai-mode

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Prompt or question, under 400 characters. |
| `parse` | boolean | No | Return structured JSON instead of raw HTML when true. Recommended. |
| `geo_location` | string | No | Location to localize results, e.g. "United States", "New York,New York,United States", or a ZIP code. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/google/ai-mode","body":{"query":"<string>","parse":"<boolean>","geo_location":"<string>"}}'
```

### YouTube Metadata

Structured metadata for a YouTube video by ID: title, channel, views, likes, duration, description, tags and more. Costs $0.00138 per call, or $0.00162 with JavaScript rendering. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /youtube/metadata`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/video-and-social-media/youtube/metadata

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | YouTube video ID, e.g. tIgIF5lve8U. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/youtube/metadata","body":{"query":"<string>"}}'
```

### Amazon Product

Amazon product page data by ASIN: title, price, buybox, stock, rating, reviews, images and variations. Costs $0.0006 per call, or $0.00162 with JavaScript rendering. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /amazon/product`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/e-commerce/amazon/product

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | 10-character ASIN, e.g. B07FZ8S74R. |
| `parse` | boolean | No | Return structured JSON instead of raw HTML when true. Recommended. |
| `domain` | string | No | Amazon marketplace TLD, e.g. com (default), co.uk, de, fr, co.jp. |
| `geo_location` | string | No | Deliver-to location: a ZIP/postal code in the marketplace country (e.g. 10001 on com) or a 2-letter country code (e.g. DE). |
| `locale` | string | No | Interface language, e.g. en_US. Must be supported by the marketplace or the request is rejected. |
| `render` | string | No | Set to "html" for JavaScript rendering, or "png" for a screenshot. Billed at the rendering rate ($0.00162). |
| `user_agent_type` | string | No | Device type: desktop (default), mobile, tablet, or a variant: mobile_ios, mobile_android, tablet_ios, tablet_android. Note: parse=true only works with desktop on Amazon. |
| `context` | array | No | Extra options as an array of {"key": ..., "value": ...} objects. Supported keys: currency (e.g. EUR; depends on marketplace), autoselect_variant (true for accurate buybox pricing). |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/amazon/product","body":{"query":"<string>","parse":"<boolean>","domain":"<string>","geo_location":"<string>","locale":"<string>","render":"<string>","user_agent_type":"<string>","context":"<array>"}}'
```

### Walmart Product

Walmart product page data by product ID: title, price, rating, seller, variations, specifications and fulfillment. Costs $0.00138 per call, or $0.00162 with JavaScript rendering. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /walmart/product`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/e-commerce/walmart/product

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `product_id` | string | Yes | Walmart product ID, the number at the end of the product URL, e.g. 11601059297. |
| `parse` | boolean | No | Return structured JSON instead of raw HTML when true. Recommended. |
| `domain` | string | No | Walmart site: com (default), ca, com.mx, co.cr. Prices come in that site's currency. |
| `store_id` | string | No | Walmart store number as a string, e.g. "3520". |
| `delivery_zip` | string | No | Delivery ZIP/postal code as a string, e.g. "90210". The nearest store is used. |
| `fulfillment_type` | string | No | pickup, delivery or shipping. Use with store_id or delivery_zip. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/walmart/product","body":{"product_id":"<string>","parse":"<boolean>","domain":"<string>","store_id":"<string>","delivery_zip":"<string>","fulfillment_type":"<string>"}}'
```

### Scrape any public URL

Scrape any public web page by URL with automatic proxies, retries and anti-bot handling. Optional JavaScript rendering, screenshots, Markdown output, browser actions (click, type, scroll) and custom parsing. Costs $0.00138 per call, or $0.00162 with JavaScript rendering. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /universal`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `url` | string | Yes | Public URL to scrape. |
| `render` | string | No | Set to "html" for JavaScript rendering, or "png" for a screenshot. Billed at the rendering rate ($0.00162). |
| `geo_location` | string | No | Country or location to route the request from, e.g. "United States" or "Germany". |
| `user_agent_type` | string | No | Device type: desktop (default), mobile, tablet, or a variant: mobile_ios, mobile_android, tablet_ios, tablet_android. |
| `markdown` | boolean | No | Return the page content as Markdown (good for LLMs). |
| `parse` | boolean | No | Set true together with parsing_instructions to get structured JSON. |
| `parsing_instructions` | object | No | Custom Parser instructions (XPath/CSS selectors and functions). Requires parse=true. |
| `browser_instructions` | array | No | Browser actions to run before capturing, e.g. [{"type":"click","selector":{"type":"css","value":"button"}}]. Requires render=html. |
| `context` | array | No | Extra options as an array of {"key": ..., "value": ...} objects. Supported keys: headers (object of custom request headers), force_headers (true to send only your headers), cookies (array of {key,value}), force_cookies, http_method ("get" or "post"), content (base64-encoded POST body). |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/universal","body":{"url":"<string>","render":"<string>","geo_location":"<string>","user_agent_type":"<string>","markdown":"<boolean>","parse":"<boolean>","parsing_instructions":"<object>","browser_instructions":"<array>","context":"<array>"}}'
```

### Amazon Offers (Pricing)

All seller offers for an Amazon product by ASIN, one page per call: price, shipping, condition, seller, seller rating and delivery for each offer. Some ASINs return no offers, which is still billed. Costs $0.0006 per call, or $0.00162 with JavaScript rendering. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /amazon/pricing`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/e-commerce/amazon/pricing

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | 10-character ASIN, e.g. B087TXHLVQ. |
| `parse` | boolean | No | Return structured JSON instead of raw HTML when true. Recommended. |
| `domain` | string | No | Amazon marketplace TLD, e.g. com (default), co.uk, de, fr, co.jp. |
| `geo_location` | string | No | Deliver-to location: a ZIP/postal code in the marketplace country (e.g. 10001 on com) or a 2-letter country code (e.g. DE). |
| `locale` | string | No | Interface language, e.g. en_US. Must be supported by the marketplace or the request is rejected. |
| `start_page` | integer | No | Page number to fetch. Each call returns one page; paginate by incrementing. |
| `render` | string | No | Set to "html" for JavaScript rendering, or "png" for a screenshot. Billed at the rendering rate ($0.00162). |
| `user_agent_type` | string | No | Device type: desktop (default), mobile, tablet, or a variant: mobile_ios, mobile_android, tablet_ios, tablet_android. Note: parse=true only works with desktop on Amazon. |
| `context` | array | No | Extra options as an array of {"key": ..., "value": ...} objects. Supported key: currency (e.g. EUR; depends on marketplace). |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/amazon/pricing","body":{"query":"<string>","parse":"<boolean>","domain":"<string>","geo_location":"<string>","locale":"<string>","start_page":"<integer>","render":"<string>","user_agent_type":"<string>","context":"<array>"}}'
```

### Amazon Seller Profile

Amazon seller profile by seller ID: seller and business name, rating, feedback summary by period, recent feedback and business details. Costs $0.0006 per call, or $0.00162 with JavaScript rendering. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /amazon/sellers`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/e-commerce/amazon/sellers

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Amazon seller ID, e.g. A2MUQS6AX5GGR. |
| `parse` | boolean | No | Return structured JSON instead of raw HTML when true. Recommended. |
| `domain` | string | No | Amazon marketplace TLD, e.g. com (default), co.uk, de, fr, co.jp. |
| `geo_location` | string | No | Deliver-to location: a ZIP/postal code in the marketplace country (e.g. 10001 on com) or a 2-letter country code (e.g. DE). |
| `locale` | string | No | Interface language, e.g. en_US. Must be supported by the marketplace or the request is rejected. |
| `render` | string | No | Set to "html" for JavaScript rendering, or "png" for a screenshot. Billed at the rendering rate ($0.00162). |
| `user_agent_type` | string | No | Device type: desktop (default), mobile, tablet, or a variant: mobile_ios, mobile_android, tablet_ios, tablet_android. Note: parse=true only works with desktop on Amazon. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/amazon/sellers","body":{"query":"<string>","parse":"<boolean>","domain":"<string>","geo_location":"<string>","locale":"<string>","render":"<string>","user_agent_type":"<string>"}}'
```

### Amazon Best Sellers

Amazon Best Sellers ranking for a category, one page per call: position, ASIN, title, price, rating and Prime flag. Costs $0.0006 per call, or $0.00162 when rendered. Oxylabs often renders this site automatically and bills the rendering rate; send render "" to turn rendering off, though the page may then fail. x402 and MPP charge $0.00162 unless render is "". You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /amazon/bestsellers`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/e-commerce/amazon/best-sellers

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Category browse node ID (e.g. 172541) or the lowercase category slug from the Best Sellers URL (e.g. electronics). |
| `parse` | boolean | No | Return structured JSON instead of raw HTML when true. Recommended. |
| `domain` | string | No | Amazon marketplace TLD, e.g. com (default), co.uk, de, fr, co.jp. |
| `geo_location` | string | No | Deliver-to location: a ZIP/postal code in the marketplace country (e.g. 10001 on com) or a 2-letter country code (e.g. DE). |
| `locale` | string | No | Interface language, e.g. en_US. Must be supported by the marketplace or the request is rejected. |
| `start_page` | integer | No | Page number to fetch. Each call returns one page; paginate by incrementing. |
| `render` | string | No | Set to "html" for JavaScript rendering, or "png" for a screenshot. Billed at the rendering rate ($0.00162). |
| `user_agent_type` | string | No | Device type: desktop (default), mobile, tablet, or a variant: mobile_ios, mobile_android, tablet_ios, tablet_android. Note: parse=true only works with desktop on Amazon. |
| `context` | array | No | Extra options as an array of {"key": ..., "value": ...} objects. Supported key: currency (e.g. EUR; depends on marketplace). |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/amazon/bestsellers","body":{"query":"<string>","parse":"<boolean>","domain":"<string>","geo_location":"<string>","locale":"<string>","start_page":"<integer>","render":"<string>","user_agent_type":"<string>","context":"<array>"}}'
```

### Google Shopping Product

Google Shopping product details by product token: description, images, seller offers and prices, ratings, reviews, specifications and related items. Get the token from results.organic[].token of /google/shopping-search (call it with render "html" and parse true). Rendering isn't needed here. Costs $0.0012 per call, or $0.00162 with JavaScript rendering. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /google/shopping-product`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/search-engines/google/shopping/shopping-product

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Product token from results.organic[].token of /google/shopping-search (called with render "html" and parse true). |
| `parse` | boolean | No | Return structured JSON instead of raw HTML when true. Recommended. |
| `render` | string | No | Set to "html" for JavaScript rendering, needed for the full "More stores" offer list. Billed at the rendering rate ($0.00162). |
| `user_agent_type` | string | No | Device type: desktop (default), mobile, tablet, or a variant: mobile_ios, mobile_android, tablet_ios, tablet_android. |
| `geo_location` | string | No | Location override. Usually leave empty: localization is already embedded in the product token. |
| `locale` | string | No | Interface language override. Usually leave empty: localization is already embedded in the product token. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/google/shopping-product","body":{"query":"<string>","parse":"<boolean>","render":"<string>","user_agent_type":"<string>","geo_location":"<string>","locale":"<string>"}}'
```

### YouTube Channel

YouTube channel data by handle: subscriber, video and view counts, channel metadata and a list of its videos. Costs $0.00138 per call, or $0.00162 with JavaScript rendering. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /youtube/channel`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/video-and-social-media/youtube/channel

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `channel_handle` | string | Yes | YouTube channel handle including @, e.g. @Oxylabs. |
| `parse` | boolean | No | Return structured JSON instead of raw HTML when true. Recommended. |
| `limit` | integer | No | Maximum number of videos to return in the videos list (default 20). |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/youtube/channel","body":{"channel_handle":"<string>","parse":"<boolean>","limit":"<integer>"}}'
```

### YouTube Autocomplete

YouTube search autocomplete keyword suggestions for a term. Returned as YouTube's raw suggestion string (a JSONP array of suggestions). Costs $0.00138 per call, or $0.00162 with JavaScript rendering. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /youtube/autocomplete`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/video-and-social-media/youtube/autocomplete

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Search term to get suggestions for. |
| `location` | string | No | 2-letter country code, e.g. us (default US). |
| `language` | string | No | Language code, e.g. en (default). |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/youtube/autocomplete","body":{"query":"<string>","location":"<string>","language":"<string>"}}'
```

### eBay Search

eBay search results page for a keyword, one page per call, returned as HTML (or Markdown with markdown=true). Costs $0.00138 per call, or $0.00162 when rendered. Oxylabs often renders this site automatically and bills the rendering rate; send render "" to turn rendering off, though the page may then fail. x402 and MPP charge $0.00162 unless render is "". You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /ebay/search`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/e-commerce/ebay

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Search keyword or phrase. |
| `start_page` | integer | No | Page number to fetch. Each call returns one page; paginate by incrementing. |
| `domain` | string | No | eBay site: com (default), co.uk, de, ca, com.au, it, pl, com.hk, com.sg. |
| `markdown` | boolean | No | Return the page as Markdown instead of raw HTML (lighter, good for LLMs). |
| `render` | string | No | Set to "html" for JavaScript rendering, or "png" for a screenshot. Billed at the rendering rate ($0.00162). |
| `user_agent_type` | string | No | Device type: desktop (default), mobile, tablet, or a variant: mobile_ios, mobile_android, tablet_ios, tablet_android. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/ebay/search","body":{"query":"<string>","start_page":"<integer>","domain":"<string>","markdown":"<boolean>","render":"<string>","user_agent_type":"<string>"}}'
```

### eBay Product

eBay listing page by item number, returned as HTML (or Markdown with markdown=true). Costs $0.00138 per call, or $0.00162 when rendered. Oxylabs often renders this site automatically and bills the rendering rate; send render "" to turn rendering off, though the page may then fail. x402 and MPP charge $0.00162 unless render is "". You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /ebay/product`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/e-commerce/ebay

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `product_id` | string | Yes | 12-digit eBay item number from the listing URL, e.g. 406857460314. |
| `domain` | string | No | eBay site: com (default), co.uk, de, ca, com.au, it, pl, com.hk, com.sg. |
| `markdown` | boolean | No | Return the page as Markdown instead of raw HTML (lighter, good for LLMs). |
| `render` | string | No | Set to "html" for JavaScript rendering, or "png" for a screenshot. Billed at the rendering rate ($0.00162). |
| `user_agent_type` | string | No | Device type: desktop (default), mobile, tablet, or a variant: mobile_ios, mobile_android, tablet_ios, tablet_android. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/ebay/product","body":{"product_id":"<string>","domain":"<string>","markdown":"<boolean>","render":"<string>","user_agent_type":"<string>"}}'
```

### Etsy Search

Etsy search results page for a keyword, one page per call, returned as HTML (or Markdown with markdown=true). Costs $0.00138 per call, or $0.00162 when rendered. Oxylabs often renders this site automatically and bills the rendering rate; send render "" to turn rendering off, though the page may then fail. x402 and MPP charge $0.00162 unless render is "". You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /etsy/search`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/e-commerce/etsy

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Search keyword or phrase. |
| `start_page` | integer | No | Page number to fetch. Each call returns one page; paginate by incrementing. |
| `store_id` | integer | No | Shop-location filter: the Etsy location ID (locationQuery value from an Etsy search URL). |
| `markdown` | boolean | No | Return the page as Markdown instead of raw HTML (lighter, good for LLMs). |
| `render` | string | No | Set to "html" for JavaScript rendering, or "png" for a screenshot. Billed at the rendering rate ($0.00162). |
| `user_agent_type` | string | No | Device type: desktop (default), mobile, tablet, or a variant: mobile_ios, mobile_android, tablet_ios, tablet_android. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/etsy/search","body":{"query":"<string>","start_page":"<integer>","store_id":"<integer>","markdown":"<boolean>","render":"<string>","user_agent_type":"<string>"}}'
```

### Etsy Product

Etsy listing data by listing ID: title, price range, seller, shipping origin, rating, reviews count, categories and variations. Costs $0.00138 per call, or $0.00162 when rendered. Oxylabs often renders this site automatically and bills the rendering rate; send render "" to turn rendering off, though the page may then fail. x402 and MPP charge $0.00162 unless render is "". You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /etsy/product`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/e-commerce/etsy

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `product_id` | string | Yes | Etsy listing ID from the URL, e.g. 1858266469. |
| `parse` | boolean | No | Return structured JSON instead of raw HTML when true. Recommended. |
| `markdown` | boolean | No | Return the page as Markdown instead of raw HTML (lighter, good for LLMs). |
| `render` | string | No | Set to "html" for JavaScript rendering, or "png" for a screenshot. Billed at the rendering rate ($0.00162). |
| `user_agent_type` | string | No | Device type: desktop (default), mobile, tablet, or a variant: mobile_ios, mobile_android, tablet_ios, tablet_android. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/etsy/product","body":{"product_id":"<string>","parse":"<boolean>","markdown":"<boolean>","render":"<string>","user_agent_type":"<string>"}}'
```

### AliExpress Search

AliExpress search results page for a keyword, one page per call, returned as HTML (or Markdown with markdown=true). Costs $0.00138 per call, or $0.00162 with JavaScript rendering. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /aliexpress/search`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/e-commerce/aliexpress

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Search keyword or phrase. |
| `start_page` | integer | No | Page number to fetch. Each call returns one page; paginate by incrementing. |
| `domain` | string | No | com (aliexpress.com, default) or us (aliexpress.us). |
| `markdown` | boolean | No | Return the page as Markdown instead of raw HTML (lighter, good for LLMs). |
| `render` | string | No | Set to "html" for JavaScript rendering, or "png" for a screenshot. Billed at the rendering rate ($0.00162). |
| `user_agent_type` | string | No | Device type: desktop (default), mobile, tablet, or a variant: mobile_ios, mobile_android, tablet_ios, tablet_android. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/aliexpress/search","body":{"query":"<string>","start_page":"<integer>","domain":"<string>","markdown":"<boolean>","render":"<string>","user_agent_type":"<string>"}}'
```

### AliExpress Product

AliExpress product page by product ID, fully rendered, returned as HTML (or Markdown with markdown=true). Rendering is always on. Costs $0.00162 per call. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /aliexpress/product`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/e-commerce/aliexpress

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `product_id` | string | Yes | 16-digit AliExpress product ID from the URL (/item/<id>.html), e.g. 3256807539500969. |
| `domain` | string | No | com (aliexpress.com, default) or us (aliexpress.us). |
| `markdown` | boolean | No | Return the page as Markdown instead of raw HTML (lighter, good for LLMs). |
| `user_agent_type` | string | No | Device type: desktop (default), mobile, tablet, or a variant: mobile_ios, mobile_android, tablet_ios, tablet_android. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/aliexpress/product","body":{"product_id":"<string>","domain":"<string>","markdown":"<boolean>","user_agent_type":"<string>"}}'
```

### Best Buy Search

Best Buy search results page for a keyword, one page per call, with optional store pickup or shipping filters. Returned as HTML (or Markdown with markdown=true). Costs $0.00138 per call, or $0.00162 with JavaScript rendering. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /bestbuy/search`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/e-commerce/best-buy

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Search keyword or phrase. |
| `start_page` | integer | No | Page number to fetch. Each call returns one page; paginate by incrementing. |
| `fulfillment_type` | string | No | pickup (requires store_id) or shipping (requires delivery_zip). |
| `store_id` | integer | No | Best Buy store ID, e.g. 552. Used with fulfillment_type pickup. |
| `delivery_zip` | string | No | ZIP code as a string, e.g. "10001". Used with fulfillment_type shipping. |
| `markdown` | boolean | No | Return the page as Markdown instead of raw HTML (lighter, good for LLMs). |
| `render` | string | No | Set to "html" for JavaScript rendering, or "png" for a screenshot. Billed at the rendering rate ($0.00162). |
| `user_agent_type` | string | No | Device type: desktop (default), mobile, tablet, or a variant: mobile_ios, mobile_android, tablet_ios, tablet_android. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/bestbuy/search","body":{"query":"<string>","start_page":"<integer>","fulfillment_type":"<string>","store_id":"<integer>","delivery_zip":"<string>","markdown":"<boolean>","render":"<string>","user_agent_type":"<string>"}}'
```

### Best Buy Product

Best Buy product data by SKU: title, price, rating, sold-out status and additional details. Costs $0.00138 per call, or $0.00162 with JavaScript rendering. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /bestbuy/product`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/e-commerce/best-buy

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `product_id` | string | Yes | Best Buy SKU, the number at the end of the product URL, e.g. 6586591. |
| `parse` | boolean | No | Return structured JSON instead of raw HTML when true. Recommended. |
| `domain` | string | No | com (default) or ca. Structured parsing supports com only. |
| `store_id` | integer | No | Best Buy store ID for local availability, e.g. 552. |
| `delivery_zip` | string | No | Delivery ZIP code as a string, e.g. "10001". |
| `markdown` | boolean | No | Return the page as Markdown instead of raw HTML (lighter, good for LLMs). |
| `render` | string | No | Set to "html" for JavaScript rendering, or "png" for a screenshot. Billed at the rendering rate ($0.00162). |
| `user_agent_type` | string | No | Device type: desktop (default), mobile, tablet, or a variant: mobile_ios, mobile_android, tablet_ios, tablet_android. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/bestbuy/product","body":{"product_id":"<string>","parse":"<boolean>","domain":"<string>","store_id":"<integer>","delivery_zip":"<string>","markdown":"<boolean>","render":"<string>","user_agent_type":"<string>"}}'
```

### Costco Search

Costco search results page for a keyword, one page per call, fully rendered, returned as HTML (or Markdown with markdown=true). Rendering is always on. Costs $0.00162 per call. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /costco/search`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/e-commerce/costco

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Search keyword or phrase. |
| `start_page` | integer | No | Page number to fetch. Each call returns one page; paginate by incrementing. |
| `domain` | string | No | com (default) or ca. |
| `markdown` | boolean | No | Return the page as Markdown instead of raw HTML (lighter, good for LLMs). |
| `user_agent_type` | string | No | Device type: desktop (default), mobile, tablet, or a variant: mobile_ios, mobile_android, tablet_ios, tablet_android. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/costco/search","body":{"query":"<string>","start_page":"<integer>","domain":"<string>","markdown":"<boolean>","user_agent_type":"<string>"}}'
```

### Costco Product

Costco product page by product ID, returned as HTML (or Markdown with markdown=true). Costs $0.00138 per call, or $0.00162 with JavaScript rendering. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /costco/product`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/e-commerce/costco

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `product_id` | string | Yes | Costco product ID, the number before .html in the product URL. IDs are specific to each site. |
| `domain` | string | No | com (default) or ca. |
| `markdown` | boolean | No | Return the page as Markdown instead of raw HTML (lighter, good for LLMs). |
| `render` | string | No | Set to "html" for JavaScript rendering, or "png" for a screenshot. Billed at the rendering rate ($0.00162). |
| `user_agent_type` | string | No | Device type: desktop (default), mobile, tablet, or a variant: mobile_ios, mobile_android, tablet_ios, tablet_android. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/costco/product","body":{"product_id":"<string>","domain":"<string>","markdown":"<boolean>","render":"<string>","user_agent_type":"<string>"}}'
```

### Target Search

Target search results for a keyword: products with title, brand, price, rating and shipping message, with optional store or delivery filters. Costs $0.00138 per call, or $0.00162 with JavaScript rendering. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /target/search`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/e-commerce/target/search

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Search keyword or phrase. |
| `parse` | boolean | No | Return structured JSON instead of raw HTML when true. Recommended. |
| `fulfillment_type` | string | No | pickup or shop_in_store (require store_id), shipping (or same_day_delivery on categories; require delivery_zip). |
| `store_id` | integer | No | Target store number, e.g. 1771. |
| `delivery_zip` | string | No | Delivery ZIP code as a string, e.g. "10001". |
| `markdown` | boolean | No | Return the page as Markdown instead of raw HTML (lighter, good for LLMs). |
| `render` | string | No | Set to "html" for JavaScript rendering, or "png" for a screenshot. Billed at the rendering rate ($0.00162). |
| `user_agent_type` | string | No | Device type: desktop (default), mobile, tablet, or a variant: mobile_ios, mobile_android, tablet_ios, tablet_android. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/target/search","body":{"query":"<string>","parse":"<boolean>","fulfillment_type":"<string>","store_id":"<integer>","delivery_zip":"<string>","markdown":"<boolean>","render":"<string>","user_agent_type":"<string>"}}'
```

### Target Product

Target product data by TCIN: title, brand, category, description, price, stock, rating and images, with optional store or delivery localization. Costs $0.00138 per call, or $0.00162 when rendered. Oxylabs often renders this site automatically and bills the rendering rate; send render "" to turn rendering off, though the page may then fail. x402 and MPP charge $0.00162 unless render is "". You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /target/product`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/e-commerce/target/product

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `product_id` | string | Yes | Target TCIN, the number after /A- in the product URL, e.g. 89459966. |
| `parse` | boolean | No | Return structured JSON instead of raw HTML when true. Recommended. |
| `fulfillment_type` | string | No | pickup or shop_in_store (require store_id), shipping (or same_day_delivery on categories; require delivery_zip). |
| `store_id` | integer | No | Target store number, e.g. 1771. |
| `delivery_zip` | string | No | Delivery ZIP code as a string, e.g. "10001". |
| `markdown` | boolean | No | Return the page as Markdown instead of raw HTML (lighter, good for LLMs). |
| `render` | string | No | Set to "html" for JavaScript rendering, or "png" for a screenshot. Billed at the rendering rate ($0.00162). |
| `user_agent_type` | string | No | Device type: desktop (default), mobile, tablet, or a variant: mobile_ios, mobile_android, tablet_ios, tablet_android. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/target/product","body":{"product_id":"<string>","parse":"<boolean>","fulfillment_type":"<string>","store_id":"<integer>","delivery_zip":"<string>","markdown":"<boolean>","render":"<string>","user_agent_type":"<string>"}}'
```

### Target Category

Target category listing page by category ID, returned as HTML (or Markdown with markdown=true), with optional store or delivery filters. Costs $0.00138 per call, or $0.00162 with JavaScript rendering. You're billed whenever a page comes back, including the site's own 404 or error pages. Oxylabs failures (5xx/6xx), rate limits and rejected requests are free on Orthogonal credits; x402 and MPP charge up front and don't refund.

`POST /target/category`

**Estimated cost:** Dynamic — use `"dryRun": true` in the Run API request to check the exact cost before calling.

**Docs:** https://developers.oxylabs.io/products/web-scraper-api/targets/e-commerce/target/category

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `category_id` | string | Yes | Target category ID, the part after N- in the category URL, e.g. owq2q. |
| `fulfillment_type` | string | No | pickup or shop_in_store (require store_id), shipping (or same_day_delivery on categories; require delivery_zip). |
| `store_id` | integer | No | Target store number, e.g. 1771. |
| `delivery_zip` | string | No | Delivery ZIP code as a string, e.g. "10001". |
| `markdown` | boolean | No | Return the page as Markdown instead of raw HTML (lighter, good for LLMs). |
| `render` | string | No | Set to "html" for JavaScript rendering, or "png" for a screenshot. Billed at the rendering rate ($0.00162). |
| `user_agent_type` | string | No | Device type: desktop (default), mobile, tablet, or a variant: mobile_ios, mobile_android, tablet_ios, tablet_android. |

```bash
curl -X POST 'https://api.orthogonal.com/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"oxylabs-web-scraper-api","path":"/target/category","body":{"category_id":"<string>","fulfillment_type":"<string>","store_id":"<integer>","delivery_zip":"<string>","markdown":"<boolean>","render":"<string>","user_agent_type":"<string>"}}'
```

---

Full details and an interactive quickstart: https://orthogonal.com/discover/oxylabs-web-scraper-api
