NAPA Online APInapaonline.com ↗
Search NAPA Online's parts catalog by keyword, part number, or vehicle fitment. Get product details, specs, reviews, and similar products via 9 endpoints.
What is the NAPA Online API?
The NAPA Online API provides access to the napaonline.com parts catalog across 9 endpoints, covering keyword and part-number search, vehicle-fitment filtering, product specifications, customer reviews, and related products. The search_by_vehicle endpoint lets you filter compatible parts by year, make, and model, while get_product_details returns structured fitment guides, specifications, and pricing for individual SKUs.
curl -X GET 'https://api.parse.bot/scraper/88e43e4b-9413-435d-9461-c313260beda7/search_products?page=1&limit=12&query=oil+filter' \ -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 napaonline-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.napa_online_auto_parts_api import Napa, Product, Review, Category
napa = Napa()
# Search for oil filters
for product in napa.products.search(query="oil filter", limit=3):
print(product.pid, product.title, product.brand, product.sale_price)
# Get detailed product info by ID
detail = napa.products.get(product_id="PGI100474")
print(detail.pid, detail.title, detail.sale_price)
# Browse reviews for a product
for review in detail.reviews.list(limit=5):
print(review.id, review.rating, review.review_text)
# Get similar products
for similar in detail.similar.list(limit=4):
print(similar.pid, similar.title, similar.sale_price)
# Browse categories
for cat in napa.categories.list(parent_id="r0", limit=10):
print(cat.pid, cat.title)
# Vehicle fitment workflow
for year in napa.vehicles.years(limit=5):
print(year)
for make in napa.vehicles.makes(year="2020", limit=5):
print(make)
for model in napa.vehicles.models(year="2020", make="Toyota", limit=5):
print(model)
# Search parts by vehicle
for part in napa.vehicles.search_parts(year="2020", make="Toyota", model="Camry", query="brake pads", limit=3):
print(part.pid, part.title, part.brand)
Full-text search over NAPA's auto parts catalog by keyword or part number. Returns a paginated list of products with pricing, images, and part details. Common keyword searches may be redirected to a matching category automatically. Pagination via page number; each page returns up to `limit` items.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (1-based) |
| limit | integer | Max results per page |
| queryrequired | string | Search keyword or part number (e.g. 'brake pads', 'oil filter', 'SG8507M') |
{
"type": "object",
"fields": {
"docs": "array of product objects with pid, title, brand, sale_price, url, description, part_number",
"start": "integer offset of first result",
"numFound": "integer total number of matching products"
},
"sample": {
"data": {
"docs": [
{
"pid": "PGI100474",
"url": "https://www.napaonline.com/en/p/PGI100474",
"brand": "NAPA",
"title": "NAPA Gold Oil Filter",
"field_sku": "FIL100474",
"sale_price": 31.3,
"description": "NAPA Gold Filters offers a complete line...",
"part_number": "100474",
"product_line": "NAPA Filters",
"line_abbreviation": "FIL"
}
],
"start": 0,
"numFound": 469
},
"status": "success"
}
}About the NAPA Online API
Catalog Search and Product Data
The search_products endpoint accepts a keyword or part number (e.g. 'brake pads' or 'SG8507M') and returns a paginated list of matching products. Each result includes pid, title, brand, sale_price, part_number, and a url to the product page. The numFound field tells you the total result count across all pages. Note that common keyword searches may be redirected automatically to a matching category, which can affect numFound.
get_product_details takes a product_id — which can be a pid, part number, or SKU — and returns a fuller record including a fitment_guide array of compatible vehicles (each entry has make, model, startYear, and endYear), a specifications key-value object, and a features_benefits array. Fitment guide entries are useful when you need to verify which exact vehicle years a part covers.
Vehicle Fitment Selector
Three endpoints support a cascading year/make/model selector. get_vehicle_years returns every supported model year (strings, ranging from '1884' through '2026'). Pass a year to get_vehicle_makes to get the valid makes for that year, then pass year and make to get_vehicle_models to get the model list. Once you have a full vehicle specification, search_by_vehicle filters the catalog to compatible parts and supports an optional query string to narrow by keyword within those results. Each result in the docs array includes a buyers_guide field alongside the standard product fields.
Reviews and Related Products
get_product_reviews returns customer reviews sourced from Bazaarvoice. The response wraps results in a BatchedResults.q0.Results array with a TotalResults count. get_similar_products returns co-viewed items for a given product_id, with results in response.docs and a response.numFound count plus metadata describing the recommendation widget context.
The NAPA Online API is a managed, monitored endpoint for napaonline.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when napaonline.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 napaonline.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 parts lookup tool that filters compatible parts for a user's vehicle using
search_by_vehiclewith year, make, and model. - Aggregate pricing data across part numbers by querying
search_productswith specific part numbers and extractingsale_price. - Populate a product detail page with specs and fitment data by calling
get_product_detailsand reading thespecificationsobject andfitment_guidearray. - Display customer sentiment for a part by retrieving
BatchedResults.q0.Resultsfromget_product_reviews. - Implement a cascading vehicle selector UI using
get_vehicle_years,get_vehicle_makes, andget_vehicle_modelsin sequence. - Surface related purchase suggestions by feeding a
pidintoget_similar_productsand rendering the returneddocs. - Monitor catalog coverage for a category by calling
get_categorieswith aparent_idand trackingnumFoundover time.
| 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 NAPA Online have an official developer API?+
What does the `fitment_guide` field in `get_product_details` contain, and how is it structured?+
fitment_guide is an array of objects, each containing make, model, startYear, and endYear. It describes the range of vehicles a part is compatible with according to the product listing. A single part can have multiple fitment entries covering different makes and model-year ranges.Does `search_by_vehicle` return all compatible parts in the catalog, or only a subset?+
search_by_vehicle filters the catalog using buyers guide fitment data and returns results in the docs array with a numFound total. You can add an optional query string and a limit to narrow and size the result set. Without a query, the endpoint returns all fitment-matched parts for the vehicle.Does the API expose store inventory, in-store availability, or store locator data?+
Can I retrieve product images through these endpoints?+
url field points to the product page. You can fork the API on Parse and revise get_product_details to extract and return image fields if the product page exposes them.