avto APIavto.net ↗
Search and retrieve car listings from avto.net, Slovenia's leading auto marketplace. Filter by brand, model, year, and price. Get specs, equipment, and seller details.
What is the avto API?
The avto.net API provides access to Slovenia's largest car marketplace through 2 endpoints. The search endpoint returns paginated listings filterable by brand, model, year range, and price range, while the details endpoint delivers a full vehicle profile — characteristics, equipment categories, seller contact information, and ad metadata — for any individual listing URL.
curl -X GET 'https://api.parse.bot/scraper/8f939c6a-62e3-4980-babe-c0c656d276d5/search?page=1&brand=BMW&year_max=2023&year_min=2015&price_max=30000&price_min=5000' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for car ads on avto.net with optional filters for brand, model, year, and price. Returns one page of results (up to 48 ads per page) with basic ad information; `page` selects the page and defaults to 1, `total_pages` reports how many pages the search has. Each result carries the raw site attribute table in `basic_details` plus normalized fields: `mileage_km` (integer) and `power_kw` (integer) are parsed from the site's text and are null when the listing omits them; `first_registration`, `fuel`, `engine` and `transmission` are the site's own strings (null when absent, e.g. electric cars have no transmission); `image_url` is the listing's photo (a reduced-size thumbnail on regular listings, larger on promoted ones). Body type is not shown on the search results page and is only available from the details endpoint (characteristics). The `model` value is resolved against the site's live model list at call time: the site's exact model value (e.g. 'serija 5:') is accepted unchanged, and common human-readable forms are mapped to it, matching case-insensitively, ignoring the trailing colon of BMW series values and the site's '---' sub-model separator, and accepting a bare BMW series designation ('5' or 'X1' for 'serija 5:' / 'serija X1:'); 'Astra', 'golf', 'Passat', 'Tucson' all resolve. When `brand` is given the lookup is restricted to that brand's models and a brand with no model list on the site is rejected; without `brand` the model is looked up across all brands and a name used by several brands is rejected as ambiguous. A model that matches nothing returns a validation error (status stale_input) instead of empty results. All filters are optional; omitting all returns all listed vehicles. The call makes three upstream requests (homepage, search submit, results page).
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| brand | string | Car brand to filter by (e.g. Audi, BMW, Volkswagen, Mercedes-Benz, Renault). |
| model | string | Car model to filter by. Accepts the site's exact model value (e.g. 'serija 3:', 'Golf---Variant') or a human-readable name ('serija 3', '3', 'Golf Variant', 'Astra', 'Tucson'); matching is case-insensitive and resolved against the site's live model list, restricted to `brand` when given. An unrecognised or ambiguous value returns a validation error. |
| year_max | integer | Maximum production year filter. |
| year_min | integer | Minimum production year filter. |
| price_max | integer | Maximum price in EUR. |
| price_min | integer | Minimum price in EUR. |
{
"type": "object",
"fields": {
"ads": "array of ad objects each containing ad_id, title, price, url, basic_details, mileage_km, first_registration, fuel, engine, power_kw, transmission, image_url",
"ads[].fuel": "string, fuel type in the site's wording (e.g. 'diesel motor'), null when absent",
"total_pages": "integer, total number of pages available",
"ads[].engine": "string, engine description (displacement and power) as shown, null when absent",
"current_page": "integer, the current page number",
"ads[].power_kw": "integer engine power in kW parsed from the engine text, null when not shown",
"ads[].image_url": "string, URL of the listing photo; null when the listing has no photo",
"ads[].mileage_km": "integer kilometres driven parsed from the listing, null when not shown",
"ads[].transmission": "string, gearbox type as shown; null when the listing omits it (e.g. electric cars)",
"ads[].first_registration": "string, year of first registration as shown by the site, null when absent"
},
"sample": {
"data": {
"ads": [
{
"url": "https://www.avto.net/Ads/details.asp?id=22865399&display=BMW%20serija%205:",
"fuel": "diesel motor",
"ad_id": "22865399",
"price": "14.500 €",
"title": "BMW serija 5: 520d xDrive Avt.",
"engine": "1995 ccm, 140 kW / 190 KM",
"power_kw": 140,
"image_url": "https://images.avto.net/photo/22865399/1028199.jpg",
"mileage_km": 209350,
"transmission": "avtomatski menjalnik",
"basic_details": {
"Motor": "1995 ccm, 140 kW / 190 KM",
"Gorivo": "diesel motor",
"Menjalnik": "avtomatski menjalnik",
"Prevoženih": "209350 km",
"1.registracija": "2016"
},
"first_registration": "2016"
},
{
"url": "https://www.avto.net/Ads/details.asp?id=22895704&display=BMW%20iX3",
"fuel": "elektro pogon",
"ad_id": "22895704",
"price": "26.300 €",
"title": "BMW iX3 Impressive",
"engine": "210 kW",
"power_kw": 210,
"image_url": "https://images.avto.net/photo/22895704/1064129.jpg",
"mileage_km": 187693,
"transmission": null,
"basic_details": {
"Motor": "210 kW",
"Gorivo": "elektro pogon",
"Baterija": "80 kWh",
"Prevoženih": "187693 km",
"1.registracija": "2022"
},
"first_registration": "2022"
}
],
"total_pages": 6,
"current_page": 1
},
"status": "success"
}
}About the avto API
Search Listings
The search endpoint accepts optional filters including brand, model, year_min, year_max, price_min, and price_max (prices in EUR). Results are paginated; the response includes an ads array where each item carries an ad_id, title, price, url, and basic_details object. The pagination object returns current_page and total_pages so you can walk through result sets programmatically.
Vehicle Details
Pass any url from a search result to the details endpoint to retrieve the full ad. The response includes a characteristics object mapping attribute names — year, kilometers, fuel type, engine displacement, and more — to their values. The equipment object groups features by category (e.g. safety, comfort, multimedia) and lists individual items under each. Seller data comes back in a seller object containing an optional name and a phones array of contact numbers. The ad_info object holds the posting_date.
Coverage Scope
avto.net is the dominant automotive classifieds platform in Slovenia. Listings span new and used passenger cars, with prices denominated in EUR. The API surfaces publicly visible ad data; listings that require a user account to view are not covered. Pagination on search allows systematic traversal of large result sets by incrementing the page parameter.
The avto API is a managed, monitored endpoint for avto.net — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when avto.net 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 avto.net 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?+
- Monitor price trends for specific makes and models on the Slovenian used-car market using
price_min/price_maxfilters over time. - Build a cross-border vehicle price comparison tool by pulling
characteristicsdata (year, km, fuel) fromdetails. - Aggregate seller contact data (
phones,name) from multiple listings for automotive lead generation. - Track new listings for a target
brandandmodelcombination by pollingsearchand comparingad_idvalues. - Populate a vehicle database with structured specs by iterating search results and fetching
characteristicsfromdetails. - Analyze equipment feature distribution across a model range using the
equipmentcategory arrays fromdetails. - Alert users when a listing for a specific model appears below a
price_maxthreshold in a given year range.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does avto.net offer an official developer API?+
What does the `details` endpoint return beyond what `search` provides?+
details endpoint returns the full characteristics object (year, km, fuel type, engine, and other vehicle attributes), the equipment object grouped by category, a seller object with name and phone numbers, and ad_info including the posting date. The search endpoint returns only ad_id, title, price, url, and basic_details per listing.Can I filter search results by fuel type, transmission, or mileage?+
search endpoint currently supports filtering by brand, model, year_min, year_max, price_min, and price_max. Fuel type, transmission, and mileage filters are not currently available as search parameters. You can fork this API on Parse and revise it to add those filter inputs.Are commercial dealer listings and private seller listings both included?+
details response returns whatever seller information is publicly visible on the ad, including name and phones. The API does not expose a dedicated field distinguishing dealer accounts from private sellers. You can fork the API on Parse and revise it to add that classification if the underlying ad data includes it.How should I paginate through a large set of search results?+
search response includes a pagination object with current_page and total_pages. Increment the page parameter in successive requests until current_page equals total_pages. There is no cursor or offset mechanism; page-number pagination is the only supported method.