Row52 APIrow52.com ↗
Access Row52 junkyard vehicle inventory by location. Returns VIN, make, model, year, row number, and date added for every vehicle at a yard.
What is the Row52 API?
The Row52 API exposes vehicle inventory data from self-service recycling yards across the Row52 network. A single endpoint, get_yard_vehicles, returns up to 8 fields per vehicle — including VIN, row number, and date added — across all paginated results for a given yard location. Whether you're hunting a specific donor car or building a parts-sourcing tool, the API delivers the same inventory data visible on the Row52 search page.
curl -X GET 'https://api.parse.bot/scraper/6aff89ac-9cc7-414c-b0f9-9524d9cabdf3/get_yard_vehicles?max_pages=1&location_id=88&max_age_days=3' \ -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 row52-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.
"""Row52 yard vehicle search — browse recycling yard inventory."""
from parse_apis.row52_yard_vehicle_search_api import Row52, Vehicle, YardNotFound
client = Row52()
# Construct a yard by location_id and list its vehicles (capped).
yard = client.yard(location_id="88")
for vehicle in yard.vehicles(max_pages=1, limit=5):
print(vehicle.year, vehicle.make, vehicle.model, vehicle.vin)
# Get yard metadata via the collection accessor.
windsor = client.yards.get(location_id="88")
print(windsor.name, windsor.total_results, "vehicles across", windsor.total_pages, "pages")
# Drill into first vehicle from another yard.
first = client.yard(location_id="89").vehicles(max_pages=1, limit=1).first()
if first:
print(first.year, first.make, first.model, "row:", first.row_number, "added:", first.date_added)
# Typed error handling for a nonexistent yard.
try:
client.yards.get(location_id="99999")
except YardNotFound as exc:
print(f"Yard not found: location_id={exc.location_id}")
print("exercised: yard.vehicles / yards.get / YardNotFound error")
Get all vehicles at a specific yard location, paginated. Returns vehicle details from the first N pages of results (30 vehicles per page). Each page contains up to 30 vehicles. The response includes yard metadata (name, total results, total pages) alongside the vehicle array.
| Param | Type | Description |
|---|---|---|
| max_pages | integer | Maximum number of pages to fetch (30 vehicles per page). |
| location_idrequired | string | The yard location ID (e.g., '88' for PICK-n-PULL Windsor, '89' for PICK-n-PULL Carson City). |
{
"type": "object",
"fields": {
"vehicles": "array of vehicle objects with vin, make, model, year, row_number, date_added, vehicle_url, image_url",
"yard_name": "string - Name of the yard location",
"location_id": "integer - Yard location ID",
"total_pages": "integer - Total pages available",
"pages_fetched": "integer - Number of pages actually fetched",
"total_results": "integer - Total vehicles at this yard",
"vehicles_count": "integer - Number of vehicles returned in this response"
}
}About the Row52 API
What the API Returns
The get_yard_vehicles endpoint accepts a location_id (for example, 88 for PICK-n-PULL Windsor or 89 for PICK-n-PULL Carson City) and returns all vehicles currently listed at that yard. Each vehicle object includes vin, make, model, year, row_number, date_added, vehicle_url, and image_url. The response also carries yard-level metadata: yard_name, location_id, total_results, total_pages, pages_fetched, and vehicles_count.
Pagination Control
Row52 paginates inventory at 30 vehicles per page. By default the endpoint fetches all available pages, but the optional max_pages parameter lets you cap how many pages are retrieved. Setting max_pages to a small number is useful when you only need a recent sample of additions or want to reduce response time for large yards with hundreds of vehicles.
Data Freshness and Coverage
Inventory reflects the active Row52 listings for the requested yard. The date_added field on each vehicle lets you sort or filter by recency on your side. Because different Row52 partner yards use the same location-ID scheme, you can iterate over multiple location_id values to aggregate inventory across yards. The total_results field tells you how many vehicles exist at the yard regardless of how many pages you fetched.
The Row52 API is a managed, monitored endpoint for row52.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when row52.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 row52.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?+
- Check whether a specific VIN is available at a nearby Row52 yard before making the trip
- Build a make/model alert system by polling
get_yard_vehiclesand diffing thevinlist over time - Aggregate multi-yard inventory using multiple
location_idvalues to find the closest donor vehicle - Rank yards by freshness using
date_addedto identify which locations receive the most new arrivals - Map row-number data from
row_numberto yard layout diagrams for route planning inside the yard - Seed a parts-sourcing database with vehicle records that include both
vehicle_urlandimage_urlfor reference
| 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 Row52 have an official developer API?+
What does the `get_yard_vehicles` endpoint return for each vehicle?+
vin, make, model, year, row_number, date_added, vehicle_url, and image_url. The wrapping response also includes yard-level fields like yard_name, total_results, and total_pages so you can tell how much inventory exists beyond what you fetched.Can I filter results by make, model, or year directly in the API?+
get_yard_vehicles endpoint returns all vehicles at a yard without server-side filtering by make, model, or year. Filtering by those fields has to happen client-side after you receive the vehicle array. You can fork this API on Parse and revise it to add filter parameters that narrow the returned vehicle list before it reaches your application.Does the API cover all Row52 yard locations, or only a subset?+
location_id in the Row52 network. You need to know the numeric ID for each yard you want to query; the API does not currently include a yard-directory endpoint that lists all valid location IDs and their names. You can fork this API on Parse and revise it to add a yard-listing endpoint that maps location IDs to yard names.How current is the vehicle inventory returned by the API?+
date_added field to identify recently arrived vehicles and handle stale records in your own logic.