Turo APIturo.com ↗
Access Turo peer-to-peer car rental data via API. Search vehicles by location and dates, filter by price and make, and retrieve detailed specs, host info, and pricing.
What is the Turo API?
The Turo API exposes 2 endpoints that cover peer-to-peer car rental search and vehicle detail retrieval from Turo.com. The search_cars endpoint accepts location, date range, price filters, and make filters, returning vehicle listings with daily pricing, trip ratings, and completed-trip counts. The get_vehicle_detail endpoint returns over 15 fields per vehicle including specs, host profile, trim level, color, and a direct listing URL.
curl -X GET 'https://api.parse.bot/scraper/28a4c45a-3d0f-45e1-a91f-8a65994c9435/search_cars?limit=5&end_date=2026-07-17&end_time=10%3A00&location=Los+Angeles&sort_type=RELEVANCE&start_date=2026-07-14&start_time=10%3A00&vehicle_type=CAR' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace turo-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.turo_car_rental_search_api import Turo, VehicleSummary, Vehicle, Sort
turo = Turo()
# Search for SUVs in Los Angeles sorted by price
for car in turo.vehiclesummaries.search(location="Los Angeles", sort_type=Sort.PRICE, vehicle_type="SUV", limit=5):
print(car.year, car.make, car.model, car.avg_daily_price, car.city, car.state)
# Drill into full vehicle details
detail = car.details()
print(detail.specs.transmission, detail.specs.fuel_type, detail.specs.seats)
print(detail.pricing.avg_daily_price, detail.pricing.currency, detail.pricing.weekly_discount_pct)
print(detail.ratings.overall, detail.ratings.reviews_count)
print(detail.host.name, detail.host.is_all_star)
# Fetch a specific vehicle by ID directly
vehicle = turo.vehicles.get(vehicle_id="2612498")
print(vehicle.make, vehicle.model, vehicle.year, vehicle.type)
print(vehicle.location.city, vehicle.location.state)
print(vehicle.trip_count, vehicle.favorites_count)
Search for available rental cars on Turo by location, dates, and filters. Returns vehicle listings with pricing, ratings, and availability. Each vehicle summary exposes an id usable with get_vehicle_detail for full specs, features, and trip pricing. Server-side filtering covers location, vehicle type, make, and sort order; price filtering is applied client-side on the returned set.
| Param | Type | Description |
|---|---|---|
| make | string | Filter by make (comma-separated): e.g., 'Tesla,BMW' |
| limit | integer | Maximum number of results to return |
| end_date | string | Trip end date in YYYY-MM-DD format. Defaults to 10 days from now. |
| end_time | string | Return time in HH:MM format |
| location | string | City or location to search (e.g., 'Los Angeles', 'Miami, FL') |
| max_price | string | Maximum daily price filter (USD) |
| min_price | string | Minimum daily price filter (USD) |
| sort_type | string | Sort order for results |
| start_date | string | Trip start date in YYYY-MM-DD format. Defaults to 7 days from now. |
| start_time | string | Pickup time in HH:MM format |
| vehicle_type | string | Filter by vehicle type (comma-separated for multiple) |
{
"type": "object",
"fields": {
"end_date": "string, trip end datetime",
"location": "string, formatted address of the searched location",
"vehicles": "array of vehicle summary objects",
"start_date": "string, trip start datetime",
"price_range": "object with min, max (numbers) and currency (string), or null",
"total_results": "integer, total number of matching vehicles",
"returned_count": "integer, number of vehicles returned in this response"
},
"sample": {
"data": {
"end_date": "2026-06-20T10:00",
"location": "Los Angeles, CA, USA",
"vehicles": [
{
"id": 3538951,
"city": "Los Angeles",
"make": "Mercedes-Benz",
"tags": [],
"type": "SUV",
"year": 2025,
"model": "GLS-Class",
"state": "CA",
"rating": 5,
"currency": "USD",
"image_url": "https://images.turo.com/media/vehicle/images/21rEnQwIRT2_v9GqqVlSKw.heic",
"distance_miles": 4.15,
"is_new_listing": false,
"avg_daily_price": 158.95,
"completed_trips": 3,
"is_all_star_host": false
}
],
"start_date": "2026-06-17T10:00",
"price_range": {
"max": 740,
"min": 80,
"currency": "USD"
},
"total_results": 5963,
"returned_count": 5
},
"status": "success"
}
}About the Turo API
Search Rental Cars by Location and Filters
The search_cars endpoint accepts a location string (city or city/state format), start_date and end_date in YYYY-MM-DD format, and optional filters including min_price, max_price, and make (comma-separated values like Tesla,BMW). Results are sortable via sort_type with options RELEVANCE, PRICE, or DISTANCE. The response includes a vehicles array where each object carries the vehicle id, make, model, year, type, avg_daily_price, currency, rating, completed_trips, and the vehicle's city and state. The response also surfaces total_results and returned_count so you can track coverage, plus a price_range object with min, max, and currency.
Vehicle Detail by ID
The get_vehicle_detail endpoint takes a vehicle_id (obtained from search_cars results) along with optional start_date, end_date, start_time, and end_time parameters to retrieve date-specific pricing. The response includes the vehicle's make, model, year, trim, color, and type, as well as a specs object covering transmission, fuel_type, mpg, seats, and doors. Host data comes back under the host object with name, id, and is_all_star status. The url field provides the full Turo listing link for deep-linking into the platform.
Availability and Known Limitations
Cloudflare protection on Turo may intermittently affect request success. The API handles this at the infrastructure level, but occasional transient failures are possible. Date parameters default to a 7-to-10-day window from the current date when not supplied, which affects both search results and pricing returned by get_vehicle_detail. The limit parameter on search_cars controls result set size when you need to cap output for downstream processing.
The Turo API is a managed, monitored endpoint for turo.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when turo.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official turo.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a car rental price comparison tool using
avg_daily_priceandprice_rangefromsearch_cars - Track Turo inventory by location to analyze supply and demand for specific vehicle makes and models
- Aggregate host quality signals using
completed_trips,rating, andhost.is_all_starfields from vehicle detail - Filter EV availability in a city by passing 'Tesla' or other EV brands into the
makeparameter - Generate vehicle detail pages for a travel app using
specs,trim,color, andurlfromget_vehicle_detail - Monitor daily price fluctuations on specific vehicle IDs by querying
get_vehicle_detailwith different date ranges - Build a fleet analytics dashboard by collecting
type,fuel_type, andseatsdata across multiple search results
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Turo have an official public developer API?+
What does `search_cars` return for each vehicle, and how granular are the filters?+
vehicles array includes id, make, model, year, type, avg_daily_price, currency, rating, completed_trips, city, and state. Filters include min_price, max_price, a comma-separated make string, and sort_type (RELEVANCE, PRICE, or DISTANCE). You can also cap the result count with the limit parameter.Are vehicle images returned by the API?+
get_vehicle_detail endpoint is described as returning images, but the current documented response schema does not expose a separate image array in the field list above. The API covers core specs, host data, pricing, and listing URLs. You can fork it on Parse and revise to explicitly surface the images field if that data is present in the underlying response.Does the API support booking or reservation creation?+
search_cars retrieves available listings and get_vehicle_detail returns vehicle and pricing data. You can fork it on Parse and revise to add any booking-adjacent endpoint if that surface becomes accessible.How should I handle intermittent failures when querying `search_cars`?+
search_cars calls, especially for high-frequency polling use cases.