Webmotors API & Scraper
The Webmotors API returns Brazil's largest vehicle marketplace as clean JSON in four actions: search, listing, reference_price and makes_models.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
search covers carros and motos - 350,975 cars and 53,422 motorbikes on 2026-09-23 - and filters the way Brazilian dealers actually filter: make, model, version, model-year range, price range, mileage range, gearbox, fuel, body type, colour, door count, equipment, listing attributes such as unico dono or IPVA pago, armoured or not, new or used, dealer or private seller, the licence-plate final-digit group used for Sao Paulo's rodizio, Webmotors' own lifestyle buckets, a state or city, and a single dealer's whole stock. Every filter was checked live against Webmotors' own total and every returned row: Toyota 23,519, Toyota Corolla 6,628, manual gearbox 92,146, pickups 37,236, white cars 104,569, private sellers 71,373, dealers 179,322, new 40,141, armoured 22,392, Parana 32,198, the city of Sao Paulo 80,837. Every row carries the asking price in BRL, the mileage in km, the gearbox, body type, colour, doors, engine size, power in cv, drivetrain, boot and tank capacity, wheel size, whether the car has ever passed through an auction, Webmotors' percentage of the FIPE price, the full description, every photo, and the seller with their trading name, type, city, state, neighbourhood, street, postcode and score. Two Brazilian details are handled properly. First, a Brazilian listing carries two years - the ano de fabricacao and the ano do modelo - and they differ on 41 of 96 sampled listings, so they are returned as year_manufacture and year_model and never merged. Second, the FIPE reference price is returned next to the asking price rather than instead of it: the listing carries the FIPE figure the ad was indexed with plus Webmotors' own fipe_percent, and reference_price returns the live FIPE with its own update date together with Webmotors' lowest, average and highest asking price for the same vehicle in that state. listing adds the fuel type, the full equipment list, the publication date, and the dealer's CNPJ, opening hours and published phone numbers. Motorbikes have their own specification - displacement, engine type, brakes, fuel system, cooling and starter. Every id round-trips: a search row's url resolves to the same listing, 6 of 6 cars and 5 of 5 motorbikes, and the search row and the full record agreed on price, mileage, both years, make, model, version, gearbox, body type, colour, doors and seller on 10 of 10 listings across six categories. No Webmotors account, one ReefAPI key, and the standard { ok, data, meta, error } envelope.
Four Webmotors numbers that are not the asking price
A Brazilian listing puts two years and two different FIPE valuations next to the price, and Webmotors does not validate what sellers type. Each of these gets its own named field so nothing is silently merged or mistaken for the price.
| Listing | asking price (BRL) | the other number | why it matters |
|---|---|---|---|
| Porsche Panamera 2.9 V6 E-Hybrid 4S, dealer | 949000 | year_manufacture 2025, year_model 2026 | Two different years on one car. Brazilian buyers price on the ano do modelo; merging them loses a whole model year |
| BMW X1 sDrive20i, dealer in Francisco Beltrao | 102900 | fipe_price 100728 (on the ad) vs reference_price.fipe_price 99988 (live) | The figure stored on the ad is a snapshot from when it was indexed; the live FIPE had moved. Both are returned, each with its own date |
| Audi Q5 2.0 45 TFSI, dealer in Campinas | 267800 | fipe_percent 88, market band 259890 / 294538 / 316900 | Webmotors' own percentage of FIPE, and its lowest / average / highest asking price for that car in that state - a market observation, not the index |
| First row of a price-descending search | 749900000 | no separate field - this is the seller's typo | Webmotors does not sanity-check prices. Sorting by highest price opens on sellers who omitted the decimal separator; pair price_desc with price_max |
Measured on 2026-09-23. The two years differed on 41 of 96 sampled listings (cars 9/24, motorbikes 10/24, private sellers 14/24, new cars 8/24). The two FIPE figures were identical on all 16 recent listings checked and differed on 3 of 4 listings first published two or more months earlier, by up to 3.6 per cent. Classified ads come and go - the rows above are dated.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/webmotors/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"make": "TOYOTA",
"page_size": 24
}
}{
"ok": true,
"meta": {
"api": "webmotors",
"endpoint": "search",
"mode": "live",
"latency_ms": 2956.9,
"record_count": 24,
"bytes": 110791,
"cache_hit": false,
"stop_reason": "limit_reached",
"upstream_requests": 1,
"pagination": {
"page": 1,
"page_size": 24,
"page_total": 417,
"has_more": true
},
"total_results": 23485,
"charged_credits": 2,
"version": "1.0.0"
},
"data": {
"listings": [
{
"listing_id": 79942859,
"url": "https://www.webmotors.com.br/comprar/toyota/rav4/25-vvt-ie-hybrid-sx-connect-awd-cvt/4-portas/2022/79942859",
"vehicle_type": "car",
"title": "TOYOTA RAV4 2.5 VVT-IE HYBRID SX CONNECT AWD CVT",
"make": "TOYOTA",
"make_id": 35,
"model": "RAV4",
"model_id": 1068,
"trim": "2.5 VVT-IE HYBRID SX CONNECT AWD CVT",
"trim_id": 348345,
"year_manufacture": 2022,
"year_model": 2022,
"mileage_km": 41235,
"price": 219990,
"price_search": 219990,
"currency": "BRL",
"fipe_code": null,
"fipe_price": null,
"fipe_percent": 111,
"good_deal": null,
"transmission": "Automática",
"fuel": null,
"body_type": "Utilitário esportivo",
"doors": 4,
"exterior_color": "Azul",
"exterior_color_id": "30402",
"engine_litres": "2.5",
"power_hp": 178,
"traction": "Integral permanente",
"trunk_capacity_l": 580,
"fuel_tank_capacity_l": 55,
"wheel_size_in": 18,
"armored": false,
"final_plate": null,
"has_auction_record": false,
"condition": "used",
"condition_new": false,
"description": null,
"images": [
"https://image.webmotors.com.br/_fotos/anunciousados/gigante/2026/202609/20260921/toyota-rav4-2.5-vvtie-hybrid-sx-connect-awd-cvt-wmimagem11043079815.jpg",
"https://image.webmotors.com.br/_fotos/anunciousados/gigante/2026/202609/20260921/toyota-rav4-2.5-vvtie-hybrid-sx-connect-awd-cvt-wmimagem11043281770.jpg",
"https://image.webmotors.com.br/_fotos/anunciousados/gigante/2026/202609/20260921/toyota-rav4-2.5-vvtie-hybrid-sx-connect-awd-cvt-wmimagem11043450316.jpg"
],
"image_count": 15,
"image": "https://image.webmotors.com.br/_fotos/anunciousados/gigante/2026/202609/20260921/toyota-rav4-2.5-vvtie-hybrid-sx-connect-awd-cvt-wmimagem11043079815.jpg",
"created_at": null,
"seller": {
"seller_id": 3954871,
"name": "T-Drive Osasco",
"type": "dealer",
"type_code": "PJ",
"type_label": "Concessionária",
"is_dealer": true,
"city": "Osasco",
"state": "São Paulo",
"state_code": "SP",
"neighborhood": "Vl Yara",
"street": "Av.dos Autonomistas, 1155",
"zip": "06020015",
"country": "Brasil",
"score": 0,
"cnpj": null,
"member_since": null,
"has_whatsapp": false,
"answers_quickly": false,
"delivers_vehicle": false,
"accepts_trade_in_with_change": false,
"opening_hours": null,
"phones_partial": null
},
"attributes": [
"Aceita troca",
"IPVA pago"
],
"engine_cc": null,
"exterior_color_secondary": null
},
{
"listing_id": 79300095,
"url": "https://www.webmotors.com.br/comprar/toyota/hilux/28-d-4d-turbo-diesel-cd-srx-plus-4x4-automatico/4-portas/2025/79300095",
"vehicle_type": "car",
"title": "TOYOTA HILUX 2.8 D-4D TURBO DIESEL CD SRX PLUS 4X4 AUTOMÁTICO",
"make": "TOYOTA",
"make_id": 35,
"model": "HILUX",
"model_id": 778,
"trim": "2.8 D-4D TURBO DIESEL CD SRX PLUS 4X4 AUTOMÁTICO",
"trim_id": 379551,
"year_manufacture": 2025,
"year_model": 2025,
"mileage_km": 31935,
"price": 334900,
"price_search": 334900,
"currency": "BRL",
"fipe_code": null,
"fipe_price": null,
"fipe_percent": 112,
"good_deal": null,
"transmission": "Automática",
"fuel": null,
"body_type": "Picape",
"doors": 4,
"exterior_color": "Prata",
"exterior_color_id": "30409",
"engine_litres": "2.8",
"power_hp": 204,
"traction": "Integral parcial",
"trunk_capacity_l": null,
"fuel_tank_capacity_l": 80,
"wheel_size_in": 18,
"armored": false,
"final_plate": null,
"has_auction_record": false,
"condition": "used",
"condition_new": false,
"description": "Farol de neblina, Entrada USB, Kit Multimídia, COMPRE COM A CREDIBILIDADE DE UMA CONCESSIONÁRIA! Na Umuarama Seminovos, você compra com segurança e tranquilidade. Aceitamos seu usado na troca, facilitamos sua entrada e contamos com laudo cautelar para garantir mais transparência na negociação. Temos condições para ajudar você a sair de carro novo. Aqui, a gente não perde negócio! Venha nos conhecer e encontre seu próximo carro.",
"images": [
"https://image.webmotors.com.br/_fotos/anunciousados/gigante/2026/202609/20260914/toyota-hilux-2.8-d4d-turbo-diesel-cd-srx-plus-4x4-automatico-wmimagem1123406726.jpg",
"https://image.webmotors.com.br/_fotos/anunciousados/gigante/2026/202609/20260914/toyota-hilux-2.8-d4d-turbo-diesel-cd-srx-plus-4x4-automatico-wmimagem11234079757.jpg",
"https://image.webmotors.com.br/_fotos/anunciousados/gigante/2026/202609/20260914/toyota-hilux-2.8-d4d-turbo-diesel-cd-srx-plus-4x4-automatico-wmimagem11234133831.jpg"
],
"image_count": 11,
"image": "https://image.webmotors.com.br/_fotos/anunciousados/gigante/2026/202609/20260914/toyota-hilux-2.8-d4d-turbo-diesel-cd-srx-plus-4x4-automatico-wmimagem1123406726.jpg",
"created_at": null,
"seller": {
"seller_id": 3863568,
"name": "UMUARAMA Seminovos TOYOTA ARAGUAÍNA",
"type": "dealer",
"type_code": "PJ",
"type_label": "Loja",
"is_dealer": true,
"city": "Araguaína",
"state": "Tocantins",
"state_code": "TO",
"neighborhood": "JARDIM CALIFORNIA",
"street": "ROD BR 153 N 1787",
"zip": "77816800",
"country": "Brasil",
"score": 0,
"cnpj": null,
"member_since": null,
"has_whatsapp": false,
"answers_quickly": false,
"delivers_vehicle": false,
"accepts_trade_in_with_change": false,
"opening_hours": null,
"phones_partial": null
},
"attributes": [
"Aceita troca"
],
"engine_cc": null,
"exterior_color_secondary": null
},
{
"listing_id": 79974771,
"url": "https://www.webmotors.com.br/comprar/toyota/hilux/28-d-4d-turbo-diesel-cd-srx-4x4-automatico/4-portas/2025/79974771",
"vehicle_type": "car",
"title": "TOYOTA HILUX 2.8 D-4D TURBO DIESEL CD SRX 4X4 AUTOMÁTICO",
"make": "TOYOTA",
"make_id": 35,
"model": "HILUX",
"model_id": 778,
"trim": "2.8 D-4D TURBO DIESEL CD SRX 4X4 AUTOMÁTICO",
"trim_id": 348548,
"year_manufacture": 2025,
"year_model": 2025,
"mileage_km": 13903,
"price": 279990,
"price_search": 279990,
"currency": "BRL",
"fipe_code": null,
"fipe_price": null,
"fipe_percent": 97,
"good_deal": true,
"transmission": "Automática",
"fuel": null,
"body_type": "Picape",
"doors": 4,
"exterior_color": "Cinza",
"exterior_color_id": "30405",
"engine_litres": "2.8",
"power_hp": 204,
"traction": "Integral parcial",
"trunk_capacity_l": null,
"fuel_tank_capacity_l": 80,
"wheel_size_in": 18,
"armored": false,
"final_plate": null,
"has_auction_record": false,
"condition": "used",
"condition_new": false,
"description": "TOYOTA T-DRIVE ALPHAVILLE Encontre seu próximo veículo novo com garantia de 10 Anos. ? Diferenciais: * Condições especiais de financiamento. * Planos sujeitos à análise de crédito. * Avaliação justa do seu veículo na troca Nossa equipe está preparada para oferecer um atendimento personalizado e ajudar você a encontrar o carro ideal. Reservamos o direito de corrigir possíveis erros de digitação e alterar valores sem aviso prévio.",
"images": [
"https://image.webmotors.com.br/_fotos/anunciousados/gigante/2026/202609/20260921/toyota-hilux-2.8-d4d-turbo-diesel-cd-srx-4x4-automatico-wmimagem21165117765.jpg",
"https://image.webmotors.com.br/_fotos/anunciousados/gigante/2026/202609/20260921/toyota-hilux-2.8-d4d-turbo-diesel-cd-srx-4x4-automatico-wmimagem21165246373.jpg",
"https://image.webmotors.com.br/_fotos/anunciousados/gigante/2026/202609/20260921/toyota-hilux-2.8-d4d-turbo-diesel-cd-srx-4x4-automatico-wmimagem21165335221.jpg"
],
"image_count": 16,
"image": "https://image.webmotors.com.br/_fotos/anunciousados/gigante/2026/202609/20260921/toyota-hilux-2.8-d4d-turbo-diesel-cd-srx-4x4-automatico-wmimagem21165117765.jpg",
"created_at": null,
"seller": {
"seller_id": 3921117,
"name": "TDrive Alphaville",
"type": "dealer",
"type_code": "PJ",
"type_label": "Concessionária",
"is_dealer": true,
"city": "Barueri",
"state": "São Paulo",
"state_code": "SP",
"neighborhood": "Alphaville Empresarial",
"street": "Est.da Aldeinha, 120",
"zip": "06465100",
"country": "Brasil",
"score": 0,
"cnpj": null,
"member_since": null,
"has_whatsapp": false,
"answers_quickly": false,
"delivers_vehicle": false,
"accepts_trade_in_with_change": false,
"opening_hours": null,
"phones_partial": null
},
"attributes": [
"Aceita troca",
"Único dono",
"IPVA pago"
],
"engine_cc": null,
"exterior_color_secondary": null
}
],
"total_results": 23485,
"page": 1,
"page_size": 24,
"page_total": 417,
"has_more": true,
"next_page": 2,
"ad_slots_dropped": 0,
"duplicates_dropped": 0
}
}What the Webmotors API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search live Webmotors stock (carros and motos) by make, model, version, model-year range, price range, mileage range, transmission, fuel, body type, colour, doors, equipment, seller type or location. Returns the full listing row for every hit plus webmotors' own total for the query. | Price-intelligence teams call search to search live Webmotors stock (carros and motos) by make, model, version, model-year range, pri…. | vehicle_type, make, model, trim, year_min, ... |
| listing | The complete record for one listing, from the URL `search` returns: every specification, all equipment, the full description, every photo, the seller with their CNPJ, address and opening hours, and — unlike the search row — the fuel type and the FIPE reference price alongside the asking price. | Classifieds aggregators call listing to get the complete record for one listing, from the URL `search` returns. | url, include_reference_price, include_phones |
| reference_price | The FIPE reference price for one listing (the Brazilian used-car price index) plus Webmotors' own lowest / average / highest asking price for the same vehicle in that state, each with its own update date. Takes the bare listing id. | Resale and arbitrage tools call reference_price to get the FIPE reference price for one listing (the Brazilian used-car price index) plus Webmotors'…. | listing_id, vehicle_type |
| makes_models | Webmotors' own make → model tree for cars or motorbikes — the exact spellings the `make` and `model` search filters expect. | Lead-generation teams call makes_models to get webmotors' own make → model tree for cars or motorbikes. | vehicle_type, make |
Call search from your stack
curl -X POST https://api.reefapi.com/webmotors/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"make":"TOYOTA","page_size":24}'import requests
r = requests.post(
"https://api.reefapi.com/webmotors/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"make": "TOYOTA",
"page_size": 24
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/webmotors/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"make": "TOYOTA",
"page_size": 24
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.webmotors.search with {"make":"TOYOTA","page_size":24}.Who uses this API and why
- Used-car dealers and pricing tools compare a listing's asking price against the FIPE index and against Webmotors' own lowest, average and highest price for the same vehicle in the same state.
- Valuation and insurance models train on both Brazilian years, mileage, version and options instead of a single merged year.
- Market analysts size Brazilian inventory by make, model year, state, body type and dealer versus private seller straight from Webmotors' own totals.
- Dealer groups and lead-generation teams pull a competitor's entire stock by dealer id, with their location, score and published contact details.
- Auction and fleet buyers filter on the auction-history flag, armoured vehicles, one-owner listings and IPVA-paid attributes that only Brazilian listings carry.
Questions developers ask before integrating
Why does a Webmotors listing have two years?
Because Brazilian vehicles have an ano de fabricacao (the year the car was built) and an ano do modelo (the model year it is sold as), and they are often not the same. On 2026-09-23 they differed on 41 of 96 sampled listings - 9 of 24 cars, 10 of 24 motorbikes, 14 of 24 private-seller listings and 8 of 24 new cars. The API returns them as year_manufacture and year_model. They are never merged into a single year field, because on nearly half the inventory that would be a wrong value rather than a missing one. The year_min and year_max filters work on the ano do modelo, which is what Webmotors itself filters on.
Does the API return the FIPE price?
Yes, and it keeps it apart from the asking price. FIPE is Brazil's reference price index. Every listing carries fipe_price and fipe_code as stored on the ad, plus fipe_percent, which is Webmotors' own figure for how the asking price compares - 88 means the car is listed at 88 per cent of FIPE. The reference_price action returns the live FIPE for that vehicle with its own update date, and alongside it Webmotors' own lowest, average and highest asking price for the same vehicle in that state, with a separate update date. Those two things are named differently on purpose: fipe_price is the index, market_lowest_price / market_average_price / market_highest_price are what people are actually asking. On recent listings the two FIPE figures agree; on older ads the figure stored on the ad can be a few per cent stale, so both are given rather than averaged.
Do the filters really narrow the results?
Each one was checked live on 2026-09-23: the filtered total had to be smaller than Webmotors' unfiltered total measured in the same run, and every returned row had to match the filter. Out of 350,975 cars - Toyota 23,519, Toyota Corolla 6,628, 50,000 to 70,000 BRL 44,939, model years 2022 to 2024 95,415, under 20,000 km 83,212, over 100,000 km 66,928, manual 92,146, diesel 33,133, pickups 37,236, white 104,569, two-door 19,789, private sellers 71,373, dealers 179,322, new 40,141, used 310,878, armoured 22,392, air conditioning 276,415, one owner 67,629, Parana 32,198, the city of Sao Paulo 80,837, and a single dealer's stock 41. Filters Webmotors accepts but ignores are deliberately not offered, so a filter you pass always does something.
Which sort orders are available?
The five Webmotors itself offers: relevance, price_asc, price_desc, year_desc (newest model year) and mileage_asc (lowest km). Each was verified to actually reorder a full page of results. Webmotors publishes no mileage-descending, year-ascending or newest-listing order, so none is offered rather than accepted and ignored. One warning: Webmotors does not validate the prices sellers type, so price_desc opens with listings in the hundreds of millions of BRL where the seller left out the decimal separator. Combine it with price_max.
How many listings can I page through?
Webmotors serves about 10,000 rows per query however large the total is - an unfiltered car search reports 350,975 results but only 417 pages of 24. Every response returns both total_results and page_total, so you can see the ceiling instead of discovering it halfway through a job. To reach the rest of the inventory, narrow the query - by make, by state, by model year - and page each slice. Page size goes up to 100 rows.
What do I get about the seller?
Everything the public listing page shows: the trading name, whether they are a dealership, a shop or a private individual, the seller id (which you can feed back into search as dealer_id to pull their whole stock), city, state and state code, neighbourhood, street, postcode and Webmotors' dealer score. The full record adds the CNPJ, the date they joined, their opening hours for all seven days, and the phone numbers Webmotors publishes on the listing, which were present on 8 of 10 records checked. Private individuals have no trading name on Webmotors - that field is empty because the source publishes nothing there, not because it was removed.
Are motorbikes covered as well as cars?
Yes - 53,422 motorbikes on 2026-09-23, through the same search action with vehicle_type set to bike, and 87 motorbike makes in makes_models against 138 car makes. Motorbikes have their own specification: engine_cc, engine type, brakes, fuel system, cooling and starter, and they can be filtered by displacement with engine_cc_min and engine_cc_max. They do not have a version, a door count, a power figure or a drivetrain on Webmotors, so those fields are null rather than guessed from the title. Motorbike listings round-tripped 5 of 5 from a search row to the full record.
What does Webmotors not publish?
There is no free-text search on this data - you filter by make, model and version, which is how Webmotors' own search box works. There is no radius search around a point; you filter by state or city instead. A search row carries no fuel type and no publication date - the full listing has both. A private seller has no published name. Motorbikes have no version, doors, power or drivetrain. Engine size is patchy on some segments - it was present on only 11 of 24 hatchbacks and 12 of 24 private-seller rows - and Webmotors' good_deal badge appears on roughly a quarter to a half of rows depending on the category. All of these are returned as null rather than filled in with a guess.
What is the Webmotors API?
Webmotors API is a ReefAPI endpoint group for brazil's largest car and motorbike marketplace as json, with both brazilian years and the fipe price. It returns live JSON through POST requests under /webmotors/v1.
Is the Webmotors API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Webmotors calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Webmotors login or account?
No login to Webmotors is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Webmotors data?
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Webmotors API use?
Webmotors actions currently cost 1-2 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Webmotors from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call webmotors actions with the same key, credit pool and JSON envelope used by normal REST requests.