# 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

### Scrape any public URL

Oxylabs web scraper: scrape any public URL with proxies, retries and anti-bot handling built in. Optional JavaScript rendering, screenshots, Markdown output, browser actions and custom parsing. $0.00138 per call, $0.00162 with JavaScript rendering.

`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","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>"}}'
```

### YouTube Search

Oxylabs YouTube search scraper: up to 20 videos, channels, playlists and movies for a query, with filters. $0.00138 per call, $0.00162 with JavaScript rendering.

`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","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

Oxylabs Google Trends scraper: interest over time and by region plus related topics and queries for a keyword. $0.0012 per call, $0.00162 with JavaScript rendering.

`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","path":"/google/trends-explore","body":{"query":"<string>","geo_location":"<string>","user_agent_type":"<string>","context":"<array>"}}'
```

### Amazon Search

Oxylabs Amazon search scraper: search results for a keyword with prices, ratings and sponsored flags, one page per call. $0.0006 per call, $0.00162 with JavaScript rendering.

`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","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>"}}'
```

### Walmart Search

Oxylabs Walmart search scraper: search results for a keyword with prices, ratings, sellers and fulfillment options, one page per call. $0.00138 per call, $0.00162 with JavaScript rendering.

`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","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 Search

Oxylabs Google Search scraper: Google SERP for a query, one page per call; parse=true returns structured organic results, ads and People Also Ask. $0.0012 per call, $0.00162 with JavaScript rendering.

`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","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

Oxylabs YouTube subtitles scraper: subtitles and closed captions for a video ID. $0.00138 per call, $0.00162 with JavaScript rendering.

`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","path":"/youtube/subtitles","body":{"query":"<string>","context":"<array>"}}'
```

### YouTube Metadata

Oxylabs YouTube video metadata scraper: title, channel, views, likes, duration, description and tags for a video ID. $0.00138 per call, $0.00162 with JavaScript rendering.

`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","path":"/youtube/metadata","body":{"query":"<string>"}}'
```

### Amazon Product

Oxylabs Amazon product scraper: product data by ASIN with title, price, buybox, stock, rating, reviews, images and variations. $0.0006 per call, $0.00162 with JavaScript rendering.

`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","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

Oxylabs Walmart product scraper: product data by ID with title, price, rating, seller, variations, specs and fulfillment. $0.00138 per call, $0.00162 with JavaScript rendering.

`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","path":"/walmart/product","body":{"product_id":"<string>","parse":"<boolean>","domain":"<string>","store_id":"<string>","delivery_zip":"<string>","fulfillment_type":"<string>"}}'
```

### Google AI Mode

Oxylabs Google AI Mode scraper: ask Google AI Mode a question and get the generated answer with cited sources. $0.00162 per call (rendering always on).

`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","path":"/google/ai-mode","body":{"query":"<string>","parse":"<boolean>","geo_location":"<string>"}}'
```

### Google Shopping Search

Oxylabs Google Shopping search scraper: product listings for a query with prices, merchants and ratings, one page per call. Send render "html" and parse true to get tokens for /google/shopping-product. $0.0012 per call, $0.00162 with JavaScript rendering.

`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","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>"}}'
```

### Amazon Offers (Pricing)

Oxylabs Amazon offers scraper: every seller offer for an ASIN with price, shipping, condition, seller, rating and delivery, one page per call. ASINs with no offers are still billed. $0.0006 per call, $0.00162 with JavaScript rendering.

`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","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

Oxylabs Amazon seller scraper: seller profile by seller ID with business name, rating, feedback summary, recent feedback and business details. $0.0006 per call, $0.00162 with JavaScript rendering.

`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","path":"/amazon/sellers","body":{"query":"<string>","parse":"<boolean>","domain":"<string>","geo_location":"<string>","locale":"<string>","render":"<string>","user_agent_type":"<string>"}}'
```

### Amazon Best Sellers

Oxylabs Amazon Best Sellers scraper: category ranking with position, ASIN, title, price, rating and Prime flag, one page per call. $0.0006 per call, $0.00162 rendered. Oxylabs often renders this site automatically and bills $0.00162; send render "" to turn it off (the page may then fail). x402 and MPP charge $0.00162 unless render is "".

`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","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

Oxylabs Google Shopping product scraper: product details by token with offers, prices, ratings, reviews and specs. Get the token from results.organic[].token of /google/shopping-search (render "html", parse true). Rendering isn't needed. $0.0012 per call, $0.00162 with JavaScript rendering.

`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","path":"/google/shopping-product","body":{"query":"<string>","parse":"<boolean>","render":"<string>","user_agent_type":"<string>","geo_location":"<string>","locale":"<string>"}}'
```

### YouTube Channel

Oxylabs YouTube channel scraper: channel data by handle with subscriber, video and view counts, metadata and its videos. $0.00138 per call, $0.00162 with JavaScript rendering.

`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","path":"/youtube/channel","body":{"channel_handle":"<string>","parse":"<boolean>","limit":"<integer>"}}'
```

### YouTube Autocomplete

Oxylabs YouTube autocomplete scraper: keyword suggestions for a term, returned as YouTube's raw JSONP suggestion string. $0.00138 per call, $0.00162 with JavaScript rendering.

`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","path":"/youtube/autocomplete","body":{"query":"<string>","location":"<string>","language":"<string>"}}'
```

### eBay Search

Oxylabs eBay search scraper: search results page for a keyword as HTML or Markdown (markdown=true). $0.00138 per call, $0.00162 rendered. Oxylabs often renders this site automatically and bills $0.00162; send render "" to turn it off (the page may then fail). x402 and MPP charge $0.00162 unless render is "".

`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","path":"/ebay/search","body":{"query":"<string>","start_page":"<integer>","domain":"<string>","markdown":"<boolean>","render":"<string>","user_agent_type":"<string>"}}'
```

### eBay Product

Oxylabs eBay product scraper: listing page by item number as HTML or Markdown (markdown=true). $0.00138 per call, $0.00162 rendered. Oxylabs often renders this site automatically and bills $0.00162; send render "" to turn it off (the page may then fail). x402 and MPP charge $0.00162 unless render is "".

`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","path":"/ebay/product","body":{"product_id":"<string>","domain":"<string>","markdown":"<boolean>","render":"<string>","user_agent_type":"<string>"}}'
```

### Etsy Search

Oxylabs Etsy search scraper: search results page for a keyword as HTML or Markdown (markdown=true). $0.00138 per call, $0.00162 rendered. Oxylabs often renders this site automatically and bills $0.00162; send render "" to turn it off (the page may then fail). x402 and MPP charge $0.00162 unless render is "".

`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","path":"/etsy/search","body":{"query":"<string>","start_page":"<integer>","store_id":"<integer>","markdown":"<boolean>","render":"<string>","user_agent_type":"<string>"}}'
```

### Etsy Product

Oxylabs Etsy product scraper: listing data by listing ID with title, price range, seller, shipping origin, rating, reviews, categories and variations. $0.00138 per call, $0.00162 rendered. Oxylabs often renders this site automatically and bills $0.00162; send render "" to turn it off (the page may then fail). x402 and MPP charge $0.00162 unless render is "".

`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","path":"/etsy/product","body":{"product_id":"<string>","parse":"<boolean>","markdown":"<boolean>","render":"<string>","user_agent_type":"<string>"}}'
```

### AliExpress Search

Oxylabs AliExpress search scraper: search results page for a keyword, one page per call, as HTML or Markdown (markdown=true). $0.00138 per call, $0.00162 with JavaScript rendering.

`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","path":"/aliexpress/search","body":{"query":"<string>","start_page":"<integer>","domain":"<string>","markdown":"<boolean>","render":"<string>","user_agent_type":"<string>"}}'
```

### AliExpress Product

Oxylabs AliExpress product scraper: full product page by product ID, rendered, as HTML or Markdown (markdown=true). $0.00162 per call (rendering always on).

`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","path":"/aliexpress/product","body":{"product_id":"<string>","domain":"<string>","markdown":"<boolean>","user_agent_type":"<string>"}}'
```

### Best Buy Search

Oxylabs Best Buy search scraper: search results page for a keyword with optional store pickup or shipping filters, as HTML or Markdown (markdown=true). $0.00138 per call, $0.00162 with JavaScript rendering.

`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","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

Oxylabs Best Buy product scraper: product data by SKU with title, price, rating and sold-out status. $0.00138 per call, $0.00162 with JavaScript rendering.

`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","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

Oxylabs Costco search scraper: rendered search results page for a keyword, as HTML or Markdown (markdown=true). Slow, about 2 minutes. $0.00162 per call (rendering always on).

`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","path":"/costco/search","body":{"query":"<string>","start_page":"<integer>","domain":"<string>","markdown":"<boolean>","user_agent_type":"<string>"}}'
```

### Costco Product

Oxylabs Costco product scraper: product page by product ID as HTML or Markdown (markdown=true). $0.00138 per call, $0.00162 with JavaScript rendering.

`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","path":"/costco/product","body":{"product_id":"<string>","domain":"<string>","markdown":"<boolean>","render":"<string>","user_agent_type":"<string>"}}'
```

### Target Search

Oxylabs Target search scraper: products for a keyword with title, brand, price, rating and shipping, with optional store or delivery filters. $0.00138 per call, $0.00162 with JavaScript rendering.

`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","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

Oxylabs Target product scraper: product data by TCIN with title, brand, price, stock, rating and images, optionally localized to a store or ZIP. $0.00138 per call, $0.00162 rendered. Oxylabs often renders this site automatically and bills $0.00162; send render "" to turn it off (the page may then fail). x402 and MPP charge $0.00162 unless render is "".

`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","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

Oxylabs Target category scraper: category listing page by category ID with optional store or delivery filters, as HTML or Markdown (markdown=true). $0.00138 per call, $0.00162 with JavaScript rendering.

`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","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
