Webmotors API

Brazil's largest vehicle marketplace as JSON - with both years, and FIPE next to the asking price

The Webmotors API returns Brazil's largest vehicle marketplace as clean JSON in four actions: search, listing, reference_price and makes_models.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a Webmotors endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
W
/webmotors/v1

4 active endpoints, on 1 and 2 credit tiers.

  • POST/webmotors/v1/search
  • POST/webmotors/v1/listing
  • POST/webmotors/v1/reference_price
  • POST/webmotors/v1/makes_models

What Webmotors endpoints does ReefAPI ship?

4 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

4 endpoints

search

2 cr

Search live Webmotors stock (carros and motos) by make, model, version, model-year range, pri…

required
optional
vehicle_type, make, model, trim, year_min, year_max, price_min, price_max, mileage_min, mileage_max, transmission, fuel, body_type, exterior_color, doors, seller_type, condition, armored, optionals, attributes, final_plate, lifestyle, location, engine_cc_min, engine_cc_max, dealer_id, sort, page, page_size

listing

2 cr

The complete record for one listing, from the URL search returns.

required
url
optional
include_reference_price, include_phones

reference_price

1 cr

The FIPE reference price for one listing (the Brazilian used-car price index) plus Webmotors'…

required
listing_id
optional
vehicle_type

makes_models

1 cr

Webmotors' own make → model tree for cars or motorbikes.

required
optional
vehicle_type, make

Every parameter, every allowed value →

Webmotors API

4 of 4 endpoints, ready to run

View docs ↗

Webmotors listings for your filters: asking price in BRL, mileage, ano de fabricacao and ano do modelo as separate fields, gearbox, body type, colour, doors, engine size, power in cv, drivetrain, auction history, Webmotors' percentage of FIPE, every photo, and the seller with their name, type, city, state and score.

2 credits0 required · 9 optional
POST/webmotors/v1/search
idle
// Press "Try it" and this pane shows exactly what the
// live site returned this second — including an empty
// result, if that is the truth. No key, no account.

How the Webmotors API works

Webmotors is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 280 engines.

02
Call
POST /webmotors/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 or 2 credits per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Price a Brazilian car against FIPE in two calls

Webmotors publishes the FIPE index next to the asking price, so two calls tell you not only what one seller wants but what the car is worth.

01search
POSTsearch

Call search with make, model, year_min and mileage_max to get the live market. Every row comes back with the asking price, both years, the mileage and fipe_percent, Webmotors' own figure for how the asking price compares with the FIPE index. Sort by price_asc to see the cheapest first, and read total_results for how many cars match in the whole country.

02listing
POSTlisting

Take the url from any row and call listing for the full record: the equipment list, the description, every photo, the fuel type, the publication date and the seller's CNPJ, address and opening hours. It returns the live FIPE price and Webmotors' lowest, average and highest asking price for that vehicle in that state.

03search with dealer_id
POSTsearch with dealer_id

Feed seller.seller_id back into search as dealer_id to pull that dealer's entire stock.

One car priced against the FIPE index and against every other asking price for the same vehicle in the same state, with the dealer's whole stock one call away.

request
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}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "webmotors",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

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.

Listingasking price (BRL)the other numberwhy it matters
Porsche Panamera 2.9 V6 E-Hybrid 4S, dealer949000year_manufacture 2025, year_model 2026Two 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 Beltrao102900fipe_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 Campinas267800fipe_percent 88, market band 259890 / 294538 / 316900Webmotors' 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 search749900000no separate field - this is the seller's typoWebmotors 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.

What was measured on 2026-09-23

Every line below came from a live call on that date.

Inventory

350,975 cars and 53,422 motorbikes, 138 car makes and 87 motorbike makes

Filters

twenty search filters, each checked to narrow Webmotors' own total and to match every returned row

Sort orders

five, each checked to actually reorder a page

Paging

24 rows a page by default and up to 100; about 10,000 rows per query however large the total, and every response returns page_total so the ceiling is visible

Ids round-trip

6 of 6 cars and 5 of 5 motorbikes resolved from a search row to the same full record

Search row vs 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

Speed

search answers in about 2 seconds, a full listing in about 7

Not published by Webmotors

no fuel type or publication date on a search row, no name for a private seller, and no version, doors, power or drivetrain on motorbikes - returned null rather than guessed

What people build with Webmotors

The jobs this data is most often used for.

4

endpoints

1/2

credits per call

01

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.

02

Valuation and insurance models train on both Brazilian years, mileage, version and options instead of a single merged year.

03

Market analysts size Brazilian inventory by make, model year, state, body type and dealer versus private seller straight from Webmotors' own totals.

04

Dealer groups and lead-generation teams pull a competitor's entire stock by dealer id, with their location, score and published contact details.

What Webmotors data costs

The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 280 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
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}'
python
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"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up Webmotors.

Get a free key →
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.

18 Classifieds & Second-hand APIs on the same key

One key, one credit pool, one response envelope. If you are pulling Webmotors, you are one call away from the rest of the category — no second contract, no second integration.

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 279 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-09-23.