automoto APIautomoto.ua ↗
Access automoto.ua car listings, specs, pricing, dealerships, news, and reviews via API. Search Ukraine's automotive marketplace with 9 endpoints.
What is the automoto API?
The automoto.ua API exposes 9 endpoints covering Ukraine's automotive marketplace, giving programmatic access to used car listings, vehicle specs, dealer directories, owner reviews, and news articles. The search_listings endpoint returns paginated results filterable by make, with fields including price in USD, region, year, model, and thumbnail. Companion endpoints cover platform-wide statistics, full listing detail, and seller contact redirects.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/92330e9b-1445-45f2-8f0b-b9a7485459b2/get_listing_statistics' \ -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 automoto-ua-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.
"""Walkthrough: automoto.ua SDK — browse Ukrainian car marketplace."""
from parse_apis.automoto_ua_api import Automoto, ListingNotFound
client = Automoto()
# Get platform-wide statistics
stats = client.statisticses.get()
print(f"Platform: {stats.all} total listings, {stats.day} new today, {stats.reviews} reviews")
# Browse available makes (capped to 5 for demo)
for make in client.makes.list(limit=5):
print(f"Make: {make.name} (slug={make.slug}, {make.count.total} listings)")
# Construct a known make and explore its models
bmw = client.make(slug="BMW")
for model in bmw.models(limit=3):
print(f" Model: {model.name} — {model.count.total} listings")
# Search BMW listings with pagination capped
listing = bmw.search(limit=1).first()
if listing:
print(f"First listing: {listing.title}, ${listing.price_usd}, {listing.region}")
# Drill into full details
try:
detail = listing.details()
print(f"Detail: {detail.make} {detail.model} {detail.year}, ${detail.price_usd}")
print(f" Images: {len(detail.images)}, region: {detail.region}")
except ListingNotFound as exc:
print(f"Listing gone: {exc}")
# Get seller contact redirect
contact = detail.contacts()
print(f" Seller redirect: {contact.redirect_url}")
# Latest news
for article in client.newsarticles.list(limit=2):
print(f"News: {article.title} ({article.date})")
# Dealerships
for dealer in client.dealerships.list(limit=2):
print(f"Dealer: {dealer.name}, brands: {dealer.brands}")
# Reviews
for review in client.reviews.list(limit=2):
print(f"Review: {review.title} — {review.date}")
print("Exercised: statisticses.get / makes.list / make.models / make.search / listing.details / detail.contacts / newsarticles.list / dealerships.list / reviews.list")
Get site-wide listing statistics including total listings count, new listings per day, and total review count. Returns aggregate counters that update daily.
No input parameters required.
{
"type": "object",
"fields": {
"all": "total number of active listings on the platform",
"day": "number of new listings added today",
"reviews": "total number of reviews on the platform"
},
"sample": {
"data": {
"all": 722046,
"day": 38488,
"reviews": 326075
},
"status": "success"
}
}About the automoto API
Listings and Search
The search_listings endpoint accepts an optional make slug and page parameter, returning an array of listing summaries. Each object includes id, make, model, year, price_usd, region, url, title, specs, and thumbnail. The total_count field tells you how many listings match. For deeper detail, pass either a full url or a url_slug to get_listing_detail, which returns the full specs map (keys in Ukrainian), an images array of full-resolution URLs, type (e.g. Used), and price_usd as an integer.
Makes, Models, and Statistics
Before filtering a search, you can enumerate available makes with get_makes_list, which returns each make's integer id, display name, slug (used as make_id in downstream calls), and a count object with keys mark and total. Pass any slug to get_models_by_make to get the model roster for that brand with parallel structure. The get_listing_statistics endpoint requires no inputs and returns three top-level integers: all (total active listings), day (new listings added today), and reviews (total platform reviews).
Sellers, Dealerships, and Editorial Content
get_seller_contacts takes a numeric listing_id and returns a redirect_url pointing to the partner site where full contact details are hosted — useful for building lead pipelines without scraping each listing's contact flow yourself. The get_dealerships endpoint returns a directory of dealerships with each entry's name, logo, url, and a brands array of represented makes. For editorial data, get_news returns article headlines, publication dates in DD.MM.YYYY format, thumbnail URLs, and article URLs. get_reviews returns owner review titles (typically make, model, year), dates, URLs, and a rating string field — note the rating may be empty for some entries.
The automoto API is a managed, monitored endpoint for automoto.ua — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when automoto.ua 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 automoto.ua 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?+
- Track daily new listing volume on automoto.ua using the
dayfield fromget_listing_statisticsto monitor market activity over time. - Build a make/model browser using
get_makes_listandget_models_by_maketo show inventory counts per brand and model before a user searches. - Aggregate used car prices across Ukrainian regions by iterating
search_listingspages and collectingprice_usdandregionfields. - Display full vehicle spec sheets by fetching
get_listing_detailwith a listing URL and rendering thespecsmap andimagesarray. - Generate a dealership locator by consuming
get_dealershipsand filtering by entries whosebrandsarray contains a target make. - Monitor automotive news from Ukraine by polling
get_newsfor new article titles and dates. - Build a cross-reference tool that maps a listing ID to its seller's partner-site contact page using
get_seller_contacts.
| 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 automoto.ua have an official developer API?+
What does `get_listing_detail` return that `search_listings` does not?+
search_listings returns summary fields: id, make, model, year, price_usd, region, thumbnail, and title. get_listing_detail adds a full specs map (all vehicle attributes, labelled in Ukrainian), an images array of full-resolution photo URLs, and a type field indicating listing category (e.g. 'Used'). It accepts either a full url or a url_slug.Can I filter search results by price range, year, or region?+
search_listings currently supports filtering by make slug and page number only. Price range, manufacture year, and region filters are not exposed as parameters. You can fork the API on Parse and revise it to add those filter parameters to the search endpoint.Are seller phone numbers returned directly by the API?+
get_seller_contacts returns a redirect_url pointing to a partner site where full contact details are available. The actual phone number is hosted on that external page. You can fork the API on Parse and revise it to resolve the redirect and extract the contact information directly.How deep is the pagination for `search_listings`, and are all makes covered?+
total_count string alongside each page of results, so you can calculate the number of pages. Pagination uses an integer page parameter with no documented hard limit. get_makes_list returns every make currently listed on the platform with a non-zero count, so coverage reflects the live marketplace inventory.