# Turo API scraper — search peer-to-peer car rentals & car sharing on turo.com: find cars by location and dates with price/make/type/sort filters, get vehicle specs, pricing calendars and similar cars, plus full host profiles, a host's whole fleet and host reviews — make, model, year, daily price, ratings, trips, photos and location, no account required

> Search Turo for rentable cars at a location and date range. Filter by make, model, vehicle type (CAR/SUV/MINIVAN/TRUCK/VAN), max price and sort order; paginated (~200 cars/page). Returns the full result page as clean JSON. (If an IP is ever mid-challenged by Cloudflare it retries on a fresh datacenter IP and, only if it still cannot pass, returns a clean TARGET_BLOCKED — never fabricated data.)
> ReefAPI engine `turo` · 10 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/turo/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed or blocked calls are free.
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http, `Authorization: Bearer <key>`) and your assistant can call these actions directly.

## Endpoints

### POST /turo/v1/search — 1 credit
Search Turo for rentable cars at a location and date range. Filter by make, model, vehicle type (CAR/SUV/MINIVAN/TRUCK/VAN), max price and sort order; paginated (~200 cars/page). Returns the full result page as clean JSON. (If an IP is ever mid-challenged by Cloudflare it retries on a fresh datacenter IP and, only if it still cannot pass, returns a clean TARGET_BLOCKED — never fabricated data.)

**Parameters:**
- `location` (string, required) — Where to search — a US city, address or airport ('Los Angeles, CA, USA', 'Miami, FL', 'LAX airport'). Resolved to coordinates automatically.
- `start_date` (string, optional) — Trip start date (YYYY-MM-DD). Defaults to ~14 days out.
- `end_date` (string, optional) — Trip end date (YYYY-MM-DD). Defaults to start + 3 days.
- `start_time` (string, optional, default "10:00") — Pickup time of day (HH:MM, 24h). Default 10:00.
- `end_time` (string, optional, default "10:00") — Return time of day (HH:MM, 24h). Default 10:00.
- `country` (string, optional, default "US") — ISO-2 market country. Default US (Turo's core market).
- `make` (string, optional) — Filter by car make (e.g. Tesla, BMW, Toyota). See the `makes` action for the full supported list.
- `model` (string, optional) — Filter by model (use together with make, e.g. Model 3).
- `vehicle_type` (enum, optional) — Filter by body type. One of: CAR, SUV, MINIVAN, TRUCK, VAN, CARGO_VAN, BOX_TRUCK. [one of: CAR, SUV, MINIVAN, TRUCK, VAN, CARGO_VAN, BOX_TRUCK]
- `max_price` (number, optional) — Only cars at or below this average daily price (in the market currency, USD for US).
- `sort` (enum, optional, default "RELEVANCE") — Sort order. One of: RELEVANCE (default), PRICE_LOW, PRICE_HIGH, DISTANCE. [one of: RELEVANCE, PRICE_LOW, PRICE_HIGH, DISTANCE]
- `page` (integer, optional, default 1) — Result page (1-based). Page until meta has_more is false.

**Returns:** cars[]{vehicle_id, make, model, year, trim, type, transmission, price_per_day{amount,currency}, rating, trip_count, is_all_star_host, image, location{city,state,latitude,longitude}, host{host_id,first_name,is_all_star_host,url}, url} + meta{total_hits, page, has_more, search_location}

**Example request body:**
```json
{
  "location": "Miami, FL, USA"
}
```

### POST /turo/v1/vehicle.detail — 1 credit
Full detail for one Turo car: make/model/year/trim, transmission, seats, doors, luggage and fuel/battery specs, the categorized feature list, host card, ratings, and the price calendar. The protected listing card (host card + sub-ratings) rides a Cloudflare-guarded endpoint (best-effort, bounded retry); the specs, feature list and price calendar always come back from the open endpoints.

**Parameters:**
- `vehicle_id` (string, required) — Turo vehicle/listing id — the number at the end of a car URL (turo.com/.../<vehicle_id>) or `vehicle_id` from search.
- `start_date` (string, optional) — Trip start date (YYYY-MM-DD). Defaults to ~14 days out.
- `end_date` (string, optional) — Trip end date (YYYY-MM-DD). Defaults to start + 3 days.
- `start_time` (string, optional, default "10:00") — Pickup time of day (HH:MM, 24h). Default 10:00.
- `end_time` (string, optional, default "10:00") — Return time of day (HH:MM, 24h). Default 10:00.

**Returns:** vehicle{vehicle_id, make, model, year, trim, color, vin, transmission, seats, doors, luggage, fuel_type, battery_range_miles, image, url, description, location, host{...}, ratings{overall, count, categories[]}, number_of_reviews, number_of_trips} + features[]{category, items[]} + price{average_daily, currency} + card_blocked(bool)

**Example request body:**
```json
{
  "vehicle_id": "3613768"
}
```

### POST /turo/v1/vehicle.features — 1 credit
Specs + the full categorized feature list for one car (transmission, seats, doors, luggage capacity, fuel type, battery range, and features like Backup camera, All-wheel drive, Apple CarPlay, grouped by category).

**Parameters:**
- `vehicle_id` (string, required) — Turo vehicle/listing id — the number at the end of a car URL (turo.com/.../<vehicle_id>) or `vehicle_id` from search.

**Returns:** specs{transmission, seats, doors, luggage, large_luggage, small_luggage, fuel_type, battery_range_miles, fuel_economy} + features[]{category, items[]{label, value}}

**Example request body:**
```json
{
  "vehicle_id": "3613768"
}
```

### POST /turo/v1/vehicle.pricing — 1 credit
Daily price calendar for one car across a date window: per-day price + day of week. Defaults to the next ~3 months if no window is given.

**Parameters:**
- `vehicle_id` (string, required) — Turo vehicle/listing id — the number at the end of a car URL (turo.com/.../<vehicle_id>) or `vehicle_id` from search.
- `start_date` (string, optional) — Calendar window start (YYYY-MM-DD). Default: today.
- `end_date` (string, optional) — Calendar window end (YYYY-MM-DD). Default: ~3 months out.

**Returns:** currency + days[]{date, day_of_week, price} + price_range{min, max} + average_price

**Example request body:**
```json
{
  "vehicle_id": "3613768"
}
```

### POST /turo/v1/vehicle.similar — 1 credit
Cars similar to a given make/model near a location and dates — a reliable, Cloudflare-clear way to pull a make/model-seeded list of rentable Turo cars (price, rating, host, photo, location). Pass make + model + location; vehicle_id is optional (used only to exclude that exact car).

**Parameters:**
- `make` (string, required) — Car make to seed similar results (e.g. Tesla, BMW).
- `model` (string, optional) — Model to seed similar results (e.g. Model 3, 5 Series).
- `location` (string, required) — Where to search — a US city, address or airport ('Los Angeles, CA, USA', 'Miami, FL', 'LAX airport'). Resolved to coordinates automatically.
- `start_date` (string, optional) — Trip start date (YYYY-MM-DD). Defaults to ~14 days out.
- `end_date` (string, optional) — Trip end date (YYYY-MM-DD). Defaults to start + 3 days.
- `start_time` (string, optional, default "10:00") — Pickup time of day (HH:MM, 24h). Default 10:00.
- `end_time` (string, optional, default "10:00") — Return time of day (HH:MM, 24h). Default 10:00.
- `country` (string, optional, default "US") — ISO-2 market country. Default US (Turo's core market).
- `vehicle_id` (string, optional) — Optional: a vehicle id to exclude from the results.
- `max_results` (integer, optional, default 9) — How many similar cars to return (1-20). Default 9.

**Returns:** cars[]{vehicle_id, make, model, year, type, transmission, price_per_day{amount,currency}, rating, image, location{...}, host{...}}

**Example request body:**
```json
{
  "make": "Tesla",
  "model": "Model 3",
  "location": "Miami, FL, USA"
}
```

### POST /turo/v1/host.profile — 1 credit
Full Turo host (driver) profile: first name, All-Star/Pro status, member-since, response rate & time, ratings from renters and from car owners, rental counts and account verifications (phone/email/ID). Last name only with include_pii=true.

**Parameters:**
- `host_id` (string, required) — Turo host/driver id — the number in a host URL (turo.com/us/en/drivers/<host_id>) or `host.host_id` from a result.

**Returns:** host{host_id, first_name, is_all_star_host, is_pro_host, image, url, member_since{month,year}, response_rate, response_time, bio, rating_from_renters, rating_to_hundredth, rentals_from_renters, ratings_from_renters_count, rentals_from_owners, verifications[]}

**Example request body:**
```json
{
  "host_id": "33962137"
}
```

### POST /turo/v1/host.cars — 1 credit
Every car a Turo host has listed, paginated — make/model/year, daily price, rating, review count, location and photo per car.

**Parameters:**
- `host_id` (string, required) — Turo host/driver id — the number in a host URL (turo.com/us/en/drivers/<host_id>) or `host.host_id` from a result.
- `page` (integer, optional, default 1) — Result page (1-based). Page until meta has_more is false.

**Returns:** cars[]{vehicle_id, make, model, year, trim, transmission, price_per_day{amount,currency}, rating, review_count, image, location{...}, url} + meta{page, total_pages, has_more}

**Example request body:**
```json
{
  "host_id": "33962137"
}
```

### POST /turo/v1/host.reviews — 1 credit
Reviews left for a Turo host by their guests, paginated — star rating, the review text, date and the host's reply. Reviewer first name is kept (public on Turo); last name only with include_pii=true.

**Parameters:**
- `host_id` (string, required) — Turo host/driver id — the number in a host URL (turo.com/us/en/drivers/<host_id>) or `host.host_id` from a result.
- `page` (integer, optional, default 1) — Result page (1-based). Page until meta has_more is false.
- `per_page` (integer, optional, default 20) — Reviews per page (1-50). Default 20.

**Returns:** reviews[]{rating, text, date, reviewer{first_name, host_id}, host_reply} + meta{page, total_pages, per_page, has_more}

**Example request body:**
```json
{
  "host_id": "33962137"
}
```

### POST /turo/v1/location.autocomplete — 0 credits
Resolve a free-text place into Turo search locations (cities and airports) with id, type and coordinates — handy to confirm the place before searching.

**Parameters:**
- `location` (string, required) — Place text to resolve (city / airport / address).

**Returns:** results[]{id, label, type, latitude, longitude}

**Example request body:**
```json
{
  "location": "Los Angeles"
}
```

### POST /turo/v1/makes — 0 credits
The full list of car makes Turo supports in a market (e.g. Tesla, BMW, Toyota, Ferrari) — useful as the allowed values for the search `make` filter.

**Parameters:**
- `country` (string, optional, default "US") — ISO-2 market country. Default US (Turo's core market).

**Returns:** makes[] (string list) + count

**Example request body:**
```json
{
  "country": "US"
}
```

## More
- Try it live, no code: https://reefapi.com/playground?engine=turo
- Human docs page: https://reefapi.com/docs/turo
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
