Hertz APIhertz.com ↗
Search Hertz rental locations by city or airport code and get live vehicle availability with daily rates, fees, taxes, and features via 2 JSON endpoints.
What is the Hertz API?
The Hertz API covers 2 endpoints that let you search rental locations and retrieve live vehicle availability with pricing. The search_locations endpoint resolves city names, airport codes, and addresses to Hertz location records including OAG codes. The search_vehicles endpoint then returns available vehicles at those locations for specified pickup and dropoff dates, including daily rates, total costs, fees, taxes, and vehicle attributes.
curl -X GET 'https://api.parse.bot/scraper/ac2b8d77-183a-4671-a3a2-f58aaf87fd63/search_locations?query=JFK' \ -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 hertz-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.
"""Hertz Car Rental Search — find locations and compare vehicle pricing."""
from parse_apis.hertz_car_rental_search_api import Hertz, Location, Vehicle, LocationNotFound
client = Hertz()
# Search for airport rental locations near JFK
for loc in client.locations.search(query="JFK", limit=3):
print(loc.name, loc.oag_code, loc.city, loc.is_airport)
# Take the first LAX location and use its OAG code for vehicle search
lax = client.locations.search(query="LAX", limit=1).first()
if lax:
print(f"Pickup at: {lax.name} ({lax.oag_code})")
# Search vehicles at that location with default dates
for vehicle in client.vehicles.search(pickup_location=lax.oag_code, limit=5):
print(
vehicle.make_model,
vehicle.sipp_code,
vehicle.features.seats,
vehicle.pricing.daily_rate,
vehicle.pricing.approximate_total,
)
# Typed error handling — catch when a query returns no locations
try:
result = client.locations.search(query="XYZNONEXISTENT999", limit=1).first()
print(f"Found: {result.name}" if result else "No locations found")
except LocationNotFound as exc:
print(f"Location not found for query: {exc.query}")
print("exercised: locations.search / vehicles.search / LocationNotFound catch")
Search for Hertz rental locations by text query (city name, airport code, or address). Returns location details including the OAG code required by search_vehicles. Results are unordered; airport locations are flagged via is_airport. A single query may match locations across multiple countries.
| Param | Type | Description |
|---|---|---|
| query | string | Search text - city name, airport code, or address (e.g., 'LAX', 'JFK', 'New York', 'Chicago'). |
{
"type": "object",
"fields": {
"query": "string - the search text used",
"total": "integer - number of locations found",
"locations": "array of location objects with id, name, oag_code, category, type, address, city, state, state_code, postal_code, country, country_code, latitude, longitude, phone, is_airport, is_bookable, hours_of_operation, timezone"
}
}About the Hertz API
Location Search
The search_locations endpoint accepts a free-text query — airport codes like LAX or JFK, city names, or street addresses — and returns a list of matching Hertz locations. Each location object includes an id, name, oag_code, category, type, and a full address breakdown: address, city, state, state_code, postal_code, and country. The oag_code field is the identifier required by search_vehicles for both pickup_location and dropoff_location. The response also includes a total count of matched locations.
Vehicle Availability and Pricing
The search_vehicles endpoint takes OAG codes for pickup and dropoff locations along with ISO 8601 datetime strings for pickup_time and dropoff_time. If you omit the times, the API defaults pickup to 14 days from today and dropoff to 17 days from today, giving a 3-day rental window. An optional min_age parameter and country_code (e.g. US, GB) can further scope the search. The response contains a vehicles array where each entry carries vehicle_display_name, vehicle_type, vehicle_class, vehicle_size, vehicle_body_type, and vehicle_group, alongside pricing data that includes daily rates, total prices, fees, and taxes. The total_vehicles field shows how many options are available for that query.
One-Way Rentals
Dropoff does not need to match pickup. Pass different OAG codes to pickup_location and dropoff_location to price one-way rentals. If dropoff_location is omitted, it defaults to the same location as pickup. This makes it straightforward to compare round-trip versus one-way costs across the same set of dates.
The Hertz API is a managed, monitored endpoint for hertz.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when hertz.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 hertz.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 comparison tool that surfaces Hertz rates alongside other providers for a given airport and date range.
- Power a travel booking assistant that resolves user-entered city names to OAG codes and fetches vehicle options.
- Automate corporate travel reporting by pulling daily rental rates for specific Hertz locations on recurring dates.
- Add Hertz vehicle availability to a trip-planning app that already shows flight and hotel options.
- Monitor Hertz pricing changes for specific vehicle classes at a set of high-demand airport locations.
- Calculate one-way rental costs by querying different pickup and dropoff OAG codes for the same travel dates.
| 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 Hertz offer an official public developer API?+
What does `search_vehicles` return beyond the vehicle name?+
vehicle_type, vehicle_class, vehicle_size, vehicle_body_type, and vehicle_group for categorization, plus pricing fields covering daily rates, total prices, fees, and taxes. The response also echoes back the OAG codes and datetimes used, and a total_vehicles count.Does the API return loyalty program rates, corporate discount codes, or promotional pricing?+
Is there any pagination for `search_locations` results when many locations match a query?+
total count and a locations array, but there are no offset or page parameters in the current spec. For broad queries the full result set is returned in a single response. You can fork this API on Parse and revise it to add pagination parameters if you need to handle very large result sets differently.Can I get details about a specific location — hours, phone number, or shuttle availability?+
search_locations endpoint returns address and categorization fields but does not currently expose operating hours, phone numbers, or shuttle/facility details. You can fork this API on Parse and revise it to add a location-detail endpoint that covers those fields.