Webmotors APIwebmotors.com.br ↗
Search Brazilian car listings, get automotive news, and find city-level location data from Webmotors via a structured JSON API.
What is the Webmotors API?
This API gives programmatic access to Webmotors, Brazil's largest automotive marketplace, across 3 endpoints. search_cars returns vehicle listings filterable by make, model, year range, mileage, price, and geographic coordinates. get_news delivers paginated editorial articles with full text and author metadata. get_locations maps every Brazilian city where listings exist to a latitude/longitude pair and a live car count.
curl -X GET 'https://api.parse.bot/scraper/a4251061-6060-452a-8e77-528773754408/get_news?limit=5&offset=0' \ -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 webmotors-com-br-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: Webmotors SDK — search cars, browse locations, read news."""
from parse_apis.webmotors_api import Webmotors, VehicleType, CarSearchBlocked
client = Webmotors()
# Search used Honda cars with price/mileage filters
for car in client.cars.search(make="HONDA", vehicle_type=VehicleType.USED, price_max=150000, limit=3):
print(car.make, car.model, car.price, car.mileage)
# Get all available locations to find coordinates for geo-search
location = client.locations.list(limit=1).first()
if location:
print(location.city, location.state, location.lat, location.lng, location.count)
# Use location coordinates for a geo-filtered car search
first_car = client.cars.search(
lat=-23.55, lng=-46.63, distance=50, vehicle_type=VehicleType.ALL, limit=1
).first()
if first_car:
print(first_car.title, first_car.year_model, first_car.price, first_car.location)
# Handle antibot block errors gracefully
try:
for car in client.cars.search(make="BMW", limit=2):
print(car.make, car.model, car.version)
except CarSearchBlocked as exc:
print(f"Search temporarily blocked: {exc}")
# Browse latest automotive news articles
for article in client.articles.list(limit=3):
print(article.title, article.author, article.date)
print("exercised: cars.search / locations.list / articles.list")
Extract news articles from the Webmotors news section. Returns a paginated list of articles with titles, full HTML text content, author name, publication date, and canonical URL. Pagination uses offset/limit; total_pages in the response indicates available depth.
| Param | Type | Description |
|---|---|---|
| limit | integer | Number of articles to return per page. |
| offset | integer | Offset for pagination (number of articles to skip). |
{
"type": "object",
"fields": {
"articles": "array of article objects with id, title, text, author, date, url",
"pagination": "object with offset, total_pages, page_size, current_page"
},
"sample": {
"data": {
"articles": [
{
"id": "848904",
"url": "https://www.webmotors.com.br/wm1/noticias/byd-atto-2-hibrido-plug-in-flex-lancamento",
"date": "2026-06-09 22:42:41",
"text": "<p>O BYD Atto 2 foi apresentado...</p>",
"title": "BYD Atto 2 é híbrido plug-in flex de R$ 149.990",
"author": "Marcelo Monegato"
}
],
"pagination": {
"offset": 0,
"page_size": 12767,
"total_pages": 2554,
"current_page": 1
}
},
"status": "success"
}
}About the Webmotors API
Car Search
search_cars accepts filters including make, model, year_to, km_min, km_max, and a lat/lng pair for proximity sorting. Results come back as an array of car objects carrying id, title, make, model, version, year_fabrication, year_model, price, mileage, location, and transmission. The response also includes a total integer and a page counter for walking through large result sets. Note that promoted/sponsored (zero-km) listings appear alongside regular used-car listings and carry limited metadata compared to full used-car records.
News Articles
get_news returns articles from the Webmotors editorial section. Each article object includes id, title, text (full body content), author, date, and url. The endpoint supports limit and offset parameters for pagination, and the response includes a pagination object with current_page, total_pages, page_size, and offset so you can page through the full article archive.
Locations
get_locations requires no input parameters and returns a flat list of all Brazilian cities represented in Webmotors listings. Each entry includes city, state, abbr (two-letter state code), lat, lng, and count — the number of active listings in that city. This endpoint is the practical companion to search_cars: use it to discover valid lat/lng values before issuing location-filtered car queries.
The Webmotors API is a managed, monitored endpoint for webmotors.com.br — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when webmotors.com.br 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 webmotors.com.br 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 Brazilian used-car price tracker using
price,make,model, andyear_modelfields fromsearch_cars. - Generate city-level heatmaps of car inventory density using
lat,lng, andcountfromget_locations. - Feed an automotive news aggregator with full article text, author, and publication date from
get_news. - Filter high-mileage vehicles out of results by setting
km_maxinsearch_carsand monitoringmileagein returned records. - Compare listing volumes across Brazilian states by aggregating the
countandabbrfields fromget_locations. - Alert users when a specific make/model drops below a target price by polling
search_carswithmakeandmodelfilters. - Paginate through the full Webmotors news archive using
offsetandtotal_pagesfromget_newsfor content analysis.
| 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 Webmotors have an official developer API?+
What is the difference between promoted and regular listings returned by search_cars?+
cars array. Regular used-car listings carry the full set of fields including mileage, transmission, version, year_fabrication, and year_model. Promoted/sponsored (zero-km) listings are present but carry limited metadata — some detail fields may be absent or null for those records.Does search_cars support filtering by price range?+
km_min, km_max, year_to, make, model, and lat/lng filters but does not expose a dedicated price-range parameter. You can fork this API on Parse and revise it to add price_min and price_max query filters.Does the API return seller contact details or VIN numbers for listings?+
search_cars response covers listing attributes such as price, mileage, location, transmission, and version, but does not include seller phone numbers, email addresses, or VIN identifiers. You can fork the API on Parse and revise it to add the missing endpoint if individual listing detail pages expose that data.