# SearchAPI — Orthogonal API

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

Real-time SERP scraping API - Search YouTube, Google, Amazon, TikTok, Instagram, and 100+ other platforms

**Verified:** no

## Access

**Run API:** `POST https://api.orth.sh/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

### TripAdvisor Search

Search TripAdvisor listings

`GET /api/v1/search`

**Estimated cost:** $0.01

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `engine` | string | Yes |  |
| `q` | string | Yes | Search query |
| `tripadvisor_domain` | string | No | TripAdvisor domain |
| `category` | string | No | Category filter (all, hotels, restaurants, attractions) |
| `location` | string | No | Location filter |
| `lat` | number | No | Latitude for geo search |
| `lon` | number | No | Longitude for geo search |
| `page` | integer | No | Page number |
| `num` | integer | No | Number of results |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"searchapi","path":"/api/v1/search","method":"GET","query":{"engine":"<string>","q":"<string>","tripadvisor_domain":"<string>","category":"<string>","location":"<string>","lat":"<number>","lon":"<number>","page":"<integer>","num":"<integer>"}}'
```

### YouTube Comments

Get comments on a YouTube video

`GET /api/v1/search`

**Estimated cost:** $0.01

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `engine` | string | Yes |  |
| `video_id` | string | Yes | YouTube video ID |
| `gl` | string | No | Country code |
| `hl` | string | No | Language code |
| `next_page_token` | string | No | Pagination token |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"searchapi","path":"/api/v1/search","method":"GET","query":{"engine":"<string>","video_id":"<string>","gl":"<string>","hl":"<string>","next_page_token":"<string>"}}'
```

### YouTube Channel

Get YouTube channel info

`GET /api/v1/search`

**Estimated cost:** $0.01

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `engine` | string | Yes |  |
| `channel_id` | string | Yes | YouTube channel ID |
| `gl` | string | No | Country code |
| `hl` | string | No | Language code |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"searchapi","path":"/api/v1/search","method":"GET","query":{"engine":"<string>","channel_id":"<string>","gl":"<string>","hl":"<string>"}}'
```

### Reddit Ad Library

Search Reddit ads library

`GET /api/v1/search`

**Estimated cost:** $0.01

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `engine` | string | Yes |  |
| `q` | string | Yes | Search query |
| `industry` | string | No | Industry filter |
| `objective_type` | string | No | Campaign objective |
| `budget_category` | string | No | Budget category |
| `placements` | string | No | Ad placements |
| `post_type` | string | No | Post type filter |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"searchapi","path":"/api/v1/search","method":"GET","query":{"engine":"<string>","q":"<string>","industry":"<string>","objective_type":"<string>","budget_category":"<string>","placements":"<string>","post_type":"<string>"}}'
```

### Meta Ad Library

Search Meta/Facebook ads library

`GET /api/v1/search`

**Estimated cost:** $0.01

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `engine` | string | Yes |  |
| `q` | string | No | Search query |
| `page_id` | string | No | Facebook page ID |
| `location_id` | string | No | Location ID |
| `country` | string | No | Country code |
| `content_languages` | string | No | Content language filter |
| `active_status` | string | No | Active status filter |
| `ad_type` | string | No | Ad type filter |
| `media_type` | string | No | Media type filter |
| `platforms` | string | No | Platform filter (facebook, instagram) |
| `sort_by` | string | No | Sort order |
| `start_date` | string | No | Start date filter |
| `end_date` | string | No | End date filter |
| `next_page_token` | string | No | Pagination token |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"searchapi","path":"/api/v1/search","method":"GET","query":{"engine":"<string>","q":"<string>","page_id":"<string>","location_id":"<string>","country":"<string>","content_languages":"<string>","active_status":"<string>","ad_type":"<string>","media_type":"<string>","platforms":"<string>","sort_by":"<string>","start_date":"<string>","end_date":"<string>","next_page_token":"<string>"}}'
```

### YouTube Transcripts

Get video transcript/captions

`GET /api/v1/search`

**Estimated cost:** $0.01

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `engine` | string | Yes |  |
| `video_id` | string | Yes | YouTube video ID |
| `lang` | string | No | Transcript language code |
| `transcript_type` | string | No | Type of transcript |
| `transcript_name` | string | No | Name of specific transcript |
| `only_available` | boolean | No | Only return available transcripts |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"searchapi","path":"/api/v1/search","method":"GET","query":{"engine":"<string>","video_id":"<string>","lang":"<string>","transcript_type":"<string>","transcript_name":"<string>","only_available":"<boolean>"}}'
```

### Amazon Search

Search Amazon products

`GET /api/v1/search`

**Estimated cost:** $0.01

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `engine` | string | Yes |  |
| `q` | string | Yes | Search query |
| `amazon_domain` | string | No | Amazon domain (e.g. amazon.com, amazon.co.uk) |
| `language` | string | No | Language code |
| `delivery_country` | string | No | Delivery country code |
| `page` | integer | No | Page number |
| `sort_by` | string | No | Sort order |
| `price_min` | number | No | Minimum price filter |
| `price_max` | number | No | Maximum price filter |
| `rh` | string | No | Refinement filters |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"searchapi","path":"/api/v1/search","method":"GET","query":{"engine":"<string>","q":"<string>","amazon_domain":"<string>","language":"<string>","delivery_country":"<string>","page":"<integer>","sort_by":"<string>","price_min":"<number>","price_max":"<number>","rh":"<string>"}}'
```

### eBay Search

Search eBay listings

`GET /api/v1/search`

**Estimated cost:** $0.01

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `engine` | string | Yes |  |
| `q` | string | Yes | Search query |
| `ebay_domain` | string | No | eBay domain (e.g. ebay.com) |
| `country` | string | No | Country code |
| `delivery_country` | string | No | Delivery country |
| `page` | integer | No | Page number |
| `num` | integer | No | Number of results |
| `layout` | string | No | Results layout |
| `sort_by` | string | No | Sort order |
| `price_min` | number | No | Minimum price |
| `price_max` | number | No | Maximum price |
| `condition` | string | No | Item condition filter |
| `buying_format` | string | No | Buying format filter |
| `category_id` | string | No | Category ID |
| `postal_code` | string | No | Postal code for local |
| `distance_radius` | integer | No | Distance radius in miles |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"searchapi","path":"/api/v1/search","method":"GET","query":{"engine":"<string>","q":"<string>","ebay_domain":"<string>","country":"<string>","delivery_country":"<string>","page":"<integer>","num":"<integer>","layout":"<string>","sort_by":"<string>","price_min":"<number>","price_max":"<number>","condition":"<string>","buying_format":"<string>","category_id":"<string>","postal_code":"<string>","distance_radius":"<integer>"}}'
```

### YouTube Video Details

Get detailed info about a YouTube video

`GET /api/v1/search`

**Estimated cost:** $0.01

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `engine` | string | Yes |  |
| `video_id` | string | Yes | YouTube video ID |
| `gl` | string | No | Country code |
| `hl` | string | No | Language code |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"searchapi","path":"/api/v1/search","method":"GET","query":{"engine":"<string>","video_id":"<string>","gl":"<string>","hl":"<string>"}}'
```

### YouTube Channel Videos

Get videos from a YouTube channel

`GET /api/v1/search`

**Estimated cost:** $0.01

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `engine` | string | Yes |  |
| `channel_id` | string | Yes | YouTube channel ID |
| `gl` | string | No | Country code |
| `hl` | string | No | Language code |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"searchapi","path":"/api/v1/search","method":"GET","query":{"engine":"<string>","channel_id":"<string>","gl":"<string>","hl":"<string>"}}'
```

### Apple App Store Search

Search Apple App Store apps

`GET /api/v1/search`

**Estimated cost:** $0.01

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `engine` | string | Yes |  |
| `term` | string | Yes | Search term |
| `country` | string | No | Country code (e.g. us, gb) |
| `lang` | string | No | Language code |
| `page` | integer | No | Page number |
| `num` | integer | No | Number of results |
| `device` | string | No | Device filter (iphone, ipad) |
| `property` | string | No | Property filter |
| `include_explicit` | boolean | No | Include explicit content |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"searchapi","path":"/api/v1/search","method":"GET","query":{"engine":"<string>","term":"<string>","country":"<string>","lang":"<string>","page":"<integer>","num":"<integer>","device":"<string>","property":"<string>","include_explicit":"<boolean>"}}'
```

### Airbnb Search

Search Airbnb listings

`GET /api/v1/search`

**Estimated cost:** $0.01

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `engine` | string | Yes |  |
| `q` | string | Yes | Location query |
| `airbnb_domain` | string | No | Airbnb domain |
| `currency` | string | No | Currency code (e.g. USD, EUR) |
| `check_in_date` | string | No | Check-in date (YYYY-MM-DD) |
| `check_out_date` | string | No | Check-out date (YYYY-MM-DD) |
| `time_period` | string | No | Flexible time period |
| `adults` | integer | No | Number of adults |
| `children` | integer | No | Number of children |
| `infants` | integer | No | Number of infants |
| `pets` | integer | No | Number of pets |
| `price_min` | number | No | Minimum price |
| `price_max` | number | No | Maximum price |
| `bedrooms` | integer | No | Number of bedrooms |
| `beds` | integer | No | Number of beds |
| `bathrooms` | integer | No | Number of bathrooms |
| `property_types` | string | No | Property type filter |
| `type_of_place` | string | No | Entire place/private room/shared |
| `amenities` | string | No | Amenities filter |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"searchapi","path":"/api/v1/search","method":"GET","query":{"engine":"<string>","q":"<string>","airbnb_domain":"<string>","currency":"<string>","check_in_date":"<string>","check_out_date":"<string>","time_period":"<string>","adults":"<integer>","children":"<integer>","infants":"<integer>","pets":"<integer>","price_min":"<number>","price_max":"<number>","bedrooms":"<integer>","beds":"<integer>","bathrooms":"<integer>","property_types":"<string>","type_of_place":"<string>","amenities":"<string>"}}'
```

### TikTok Profile

Get TikTok user profile info

`GET /api/v1/search`

**Estimated cost:** $0.01

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `engine` | string | Yes |  |
| `username` | string | Yes | TikTok username |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"searchapi","path":"/api/v1/search","method":"GET","query":{"engine":"<string>","username":"<string>"}}'
```

### Instagram Profile

Get Instagram profile info

`GET /api/v1/search`

**Estimated cost:** $0.01

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `engine` | string | Yes |  |
| `username` | string | Yes | Instagram username |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"searchapi","path":"/api/v1/search","method":"GET","query":{"engine":"<string>","username":"<string>"}}'
```

### Walmart Search

Search Walmart products

`GET /api/v1/search`

**Estimated cost:** $0.01

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `engine` | string | Yes |  |
| `q` | string | Yes | Search query |
| `page` | integer | No | Page number |
| `sort_by` | string | No | Sort order |
| `price_min` | number | No | Minimum price |
| `price_max` | number | No | Maximum price |
| `category_id` | string | No | Category ID |
| `store_id` | string | No | Store ID for local inventory |
| `filters` | string | No | Additional filters |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"searchapi","path":"/api/v1/search","method":"GET","query":{"engine":"<string>","q":"<string>","page":"<integer>","sort_by":"<string>","price_min":"<number>","price_max":"<number>","category_id":"<string>","store_id":"<string>","filters":"<string>"}}'
```

### TikTok Ads Library

Search TikTok ads library

`GET /api/v1/search`

**Estimated cost:** $0.01

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `engine` | string | Yes |  |
| `q` | string | No | Search query |
| `advertiser_id` | string | No | Advertiser ID |
| `country` | string | No | Country code |
| `time_period` | string | No | Time period filter |
| `sort_by` | string | No | Sort order |
| `next_page_token` | string | No | Pagination token |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"searchapi","path":"/api/v1/search","method":"GET","query":{"engine":"<string>","q":"<string>","advertiser_id":"<string>","country":"<string>","time_period":"<string>","sort_by":"<string>","next_page_token":"<string>"}}'
```

### LinkedIn Ad Library

Search LinkedIn ads library

`GET /api/v1/search`

**Estimated cost:** $0.01

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `engine` | string | Yes |  |
| `q` | string | No | Search query |
| `advertiser` | string | No | Advertiser name |
| `country` | string | No | Country code |
| `time_period` | string | No | Time period filter |
| `next_page_token` | string | No | Pagination token |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"searchapi","path":"/api/v1/search","method":"GET","query":{"engine":"<string>","q":"<string>","advertiser":"<string>","country":"<string>","time_period":"<string>","next_page_token":"<string>"}}'
```

### YouTube Search

Search YouTube videos by query

`GET /api/v1/search`

**Estimated cost:** $0.01

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `engine` | string | Yes |  |
| `q` | string | Yes | Search query |
| `sp` | string | No | Search filter parameter |
| `gl` | string | No | Country code (e.g. us, uk, de) |
| `hl` | string | No | Language code (e.g. en, de, fr) |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"searchapi","path":"/api/v1/search","method":"GET","query":{"engine":"<string>","q":"<string>","sp":"<string>","gl":"<string>","hl":"<string>"}}'
```

---

Full details and an interactive quickstart: https://orthogonal.com/discover/searchapi
