milanuncios API

Spain's largest classifieds as JSON: marketplace, cars and real estate

The milanuncios API returns Spain's largest classifieds site as clean JSON in four actions: search for the marketplace in any category, cars/search for cars, off-roaders, classic cars, motorbikes, vans, trucks, caravans and campervans, real_estate/search for flats, houses, chalets, premises, offices, garages and more for sale, rent, flat-share or holiday rent, and listing for the full record of any ad.

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

4 active endpoints. Every call is 1 credit.

  • POST/milanuncios/v1/search
  • POST/milanuncios/v1/cars/search
  • POST/milanuncios/v1/real_estate/search
  • POST/milanuncios/v1/listing

What milanuncios 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

1 cr

Search milanuncios, Spain's largest classifieds site, by keyword and/or category.

required
optional
query, category, transaction, condition, shippable, price_dropped, price_min, price_max, seller_type, region, province, city, page, limit, include_sponsored, include_pii, max_rotations

cars/search

1 cr

Search milanuncios motor ads.

required
optional
vehicle_type, query, make, model, year_min, year_max, mileage_min, mileage_max, fuel, gearbox, power_min, power_max, price_min, price_max, seller_type, region, province, city, page, limit, include_sponsored, include_pii, max_rotations

real_estate/search

1 cr

Search milanuncios real estate for sale, rent, flat-share or holiday rent.

required
transaction
optional
property_type, query, bedrooms_min, bedrooms_max, bathrooms_min, surface_min, surface_max, price_min, price_max, seller_type, region, province, city, page, limit, include_sponsored, include_pii, max_rotations

listing

1 cr

The full milanuncios ad by id or URL, in any category.

required
ad_id
optional
include_pii, max_rotations

Every parameter, every allowed value →

milanuncios API

4 of 4 endpoints, ready to run

View docs ↗

milanuncios ads for a keyword or category: price or no-price flag, price drops, region, province and city, private or professional seller, highlighted and reserved flags, condition, shipping, publication and renewal dates, photos and description.

1 credit0 required · 4 optional
POST/milanuncios/v1/search
ok331 ms · 30 records · sample
{
  "ok": true,
  "meta": {
    "api": "milanuncios",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 331.2,
    "record_count": 30,
    "cache_hit": false
  },
  "data": {
    "listings": [
      {
        "ad_id": "615112048",
        "title": "Bicicleta BTWIN",
        "url": "https://www.milanuncios.com/bicicletas-clasicas-de-segunda-mano/bicicleta-btwin-615112048.htm",
        "category_id": 2057,
        "category": "Bicicletas clásicas",
        "category_path": [
          {
            "id": 31,
            "name": "Deportes y náutica"
          },
          {
            "id": 678,
            "name": "Deportes"
          },
          {
            "id": 679,
            "name": "Bicicletas"
          }
        ],
        "transaction": "offer",
        "price": 120,
        "currency": "EUR",
        "price_not_published": false,
        "price_includes_taxes": null,
        "financed_price": null,
        "previous_price": null,
        "price_drop_pct": null,
        "published_at": "2026-09-16T12:48:41Z",
        "renewed_at": "2026-09-16T12:48:41Z",
        "updated_at": "2026-09-16T12:48:41Z",
        "is_renewed": false,
        "location": {
          "region_id": 28,
          "region": "Madrid",
          "province_id": 28,
          "province": "Madrid",
          "city_id": 33731,
          "city": "Villanueva de la Cañada",
          "latitude": null,
          "longitude": null,
          "coordinates_withheld": false,
          "extra_provinces": []
        },
        "is_highlighted": false,
        "is_reserved": false,
        "condition": "like_new",
        "condition_label": "prácticamente nuevo",
        "shipping": {
          "shippable": false,
          "type": "maexpress",
          "package_weight": "NONE"
        },
        "contact_methods": {
          "chat": true,
          "form": true,
          "phone": false
        },
        "syndicated_from": null,
        "attributes": [
          {
            "key": "color",
            "label": "color",
            "value": "negro",
            "value_label": "negro"
          }
        ],
        "image_count": 0,
        "images": [],
        "thumbnail": null,
        "description": "Bici Rock Rider 520 ergo fitsystem size L aluminium heat treated alloy... bueno, una bici de deporte, fin. Sin usar."
      },
      {
        "ad_id": "597072457",
        "title": "Engwe c20pro",
        "url": "https://www.milanuncios.com/bicicletas-electricas-de-segunda-mano/engwe-c20pro-597072457.htm",
        "category_id": 2056,
        "category": "Bicicletas eléctricas",
        "category_path": [
          {
            "id": 31,
            "name": "Deportes y náutica"
          },
          {
            "id": 678,
            "name": "Deportes"
          },
          {
            "id": 679,
            "name": "Bicicletas"
          }
        ],
        "transaction": "offer",
        "price": 600,
        "currency": "EUR",
        "price_not_published": false,
        "price_includes_taxes": null,
        "financed_price": null,
        "previous_price": null,
        "price_drop_pct": null,
        "published_at": "2026-05-26T20:13:20Z",
        "renewed_at": "2026-09-16T04:11:01Z",
        "updated_at": "2026-09-16T13:11:01Z",
        "is_renewed": true,
        "location": {
          "region_id": 28,
          "region": "Madrid",
          "province_id": 28,
          "province": "Madrid",
          "city_id": 33078,
          "city": "Coslada",
          "latitude": null,
          "longitude": null,
          "coordinates_withheld": false,
          "extra_provinces": []
        },
        "is_highlighted": false,
        "is_reserved": false,
        "condition": "like_new",
        "condition_label": "prácticamente nuevo",
        "shipping": {
          "shippable": false,
          "type": "maexpress",
          "package_weight": "NONE"
        },
        "contact_methods": {
          "chat": true,
          "form": true,
          "phone": false
        },
        "syndicated_from": null,
        "attributes": [
          {
            "key": "color",
            "label": "color",
            "value": "gris",
            "value_label": "gris"
          }
        ],
        "image_count": 8,
        "images": [
          "https://images.milanuncios.com/api/v1/ma-ad-media-pro/images/991954f5-2855-47d3-9499-02923bc31705",
          "https://images.milanuncios.com/api/v1/ma-ad-media-pro/images/a605565a-20a9-4aba-98dd-e29976612506",
          "https://images.milanuncios.com/api/v1/ma-ad-media-pro/images/fe289afc-5c66-4814-940d-77d155f327ed"
        ],
        "thumbnail": "https://images.milanuncios.com/api/v1/ma-ad-media-pro/images/991954f5-2855-47d3-9499-02923bc31705",
        "description": "Bicicleta eléctrica plegable ENGWE C20 Pro en color gris, con 590 kilómetros . Diseñada para facilitar el transporte y el almacenamiento.\n- Motor de 250W |MAX 25KM/H | 36V 15.6Ah Batería Alcance de 40-120 km\n- 7 Velocidades.\n- cuadro de aleación de aluminio 6061, horquilla delantera de suspensión y sillín y manillar ajustables. Los anchos neumáticos de aleación de aluminio de 20 x 3.0 pulgadas ofrecen estabilidad y agarre en diferentes tipos de terrenos.\n- Con un peso de solo 24.8 kg y una capacidad de carga de hasta 120 kg, es ideal para el uso diario. En estado plegado, mide 100*54*78 cm y se puede almacenar fácilmente."
      },
      {
        "ad_id": "550283884",
        "title": "bicicleta",
        "url": "https://www.milanuncios.com/bicicletas-montana-de-segunda-mano/bicicleta-550283884.htm",
        "category_id": 2048,
        "category": "Bicicletas de montaña",
        "category_path": [
          {
            "id": 31,
            "name": "Deportes y náutica"
          },
          {
            "id": 678,
            "name": "Deportes"
          },
          {
            "id": 679,
            "name": "Bicicletas"
          }
        ],
        "transaction": "offer",
        "price": 90,
        "currency": "EUR",
        "price_not_published": false,
        "price_includes_taxes": null,
        "financed_price": null,
        "previous_price": null,
        "price_drop_pct": null,
        "published_at": "2025-07-20T18:05:45Z",
        "renewed_at": "2026-09-16T04:10:25Z",
        "updated_at": "2026-09-16T13:10:25Z",
        "is_renewed": true,
        "location": {
          "region_id": 28,
          "region": "Madrid",
          "province_id": 28,
          "province": "Madrid",
          "city_id": 44,
          "city": "Madrid",
          "latitude": null,
          "longitude": null,
          "coordinates_withheld": false,
          "extra_provinces": []
        },
        "is_highlighted": false,
        "is_reserved": false,
        "condition": "like_new",
        "condition_label": "prácticamente nuevo",
        "shipping": {
          "shippable": false,
          "type": "maexpress",
          "package_weight": "NONE"
        },
        "contact_methods": {
          "chat": true,
          "form": true,
          "phone": false
        },
        "syndicated_from": null,
        "attributes": [
          {
            "key": "color",
            "label": "color",
            "value": "negro",
            "value_label": "negro"
          }
        ],
        "image_count": 2,
        "images": [
          "https://images.milanuncios.com/api/v1/ma-ad-media-pro/images/2b5846e9-e466-4f54-8c10-ab470269536e",
          "https://images.milanuncios.com/api/v1/ma-ad-media-pro/images/8c4d7876-21eb-4206-9703-5ddc91279ba4"
        ],
        "thumbnail": "https://images.milanuncios.com/api/v1/ma-ad-media-pro/images/2b5846e9-e466-4f54-8c10-ab470269536e",
        "description": "Vendo bicicleta de 6 marchas,por quedarse pequeña a mí hija,tiene 24 pulgadas,en buen estado.del 2019 atiendo por tlf 660921628,solo se vende a particulares,,por la zona, Madrid y vernos ok"
      }
    ],
    "count": 30,
    "total": 771,
    "total_is_lower_bound": false,
    "highlighted_count": 0,
    "duplicates_dropped": 0,
    "dropped_outside_price_range": 0,
    "sponsored_dropped": 0,
    "page": 1,
    "limit": 30,
    "sort_applied": "highlighted_first_then_newest_renewal",
    "has_more": true
  }
}
Real response, fetched from the live endpoint with the parameters on the left — trimmed to the first few rows, with seller names left out. Press Try it for the untrimmed response.

How the milanuncios API works

milanuncios 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 252 engines.

02
Call
POST /milanuncios/v1/…

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

03
Pay
1 credit 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.

Diesel SEAT Ibiza under 80,000 km in Madrid, then the full ad

cars/search narrows the market with filters that were each checked to bite, and listing opens one ad with its shipping and seller details.

01search
POST/milanuncios/v1/cars/search
{"make": "seat", "model": "ibiza", "fuel": "diesel", "mileage_max": 80000, "province": "madrid"}

Cash price, financed price, year, mileage, gearbox, horsepower and dealer or private seller on every row, highlighted ads flagged. Take listings[].ad_id; page 2 with page: 2.

02listing
POST/milanuncios/v1/listing
{"ad_id": "<ad_id from step 1>"}

The full record: every attribute, all photos, warranty, whether taxes are included, the seller's member-since date and reviews.

A filtered, dated view of one model's used market in one province, with each price labelled for what it is.

request
curl -X POST https://api.reefapi.com/milanuncios/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"bicicleta"}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "milanuncios",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

Five milanuncios prices that are not simply a price

A milanuncios ad can show 0 € when the seller set no price, carry a cash and a financed price, sit at the top of a page because it paid to, have been lowered to nothing, or slip into a price filter it does not match. Each looks like an ordinary number. This engine labels every one.

Ad (category)priceflagthe catch
Electrician and plumber, Serviciosnullprice_not_published: truemilanuncios returns 0 € when no price was set - 67 of 100 service ads on 2026-09-16. Returned as null, never 0
2023 hatchback from a dealer, Coches14990financed_price: 14990, price_includes_taxes: trueDealers publish a cash price and a price with their financing; price is always the cash price
E-bike, Bicicletas1245previous_price: 1345, price_drop_pct: 7The seller lowered the price; the earlier price and the site's own percentage come with the row
Swap offer for a phone, Telefoníanullprevious_price: 90Lowered from 90 € to no price at all and still listed as a price drop; the percentage is left out
Flat for rent in Barcelona province, max 1,200 €-dropped_outside_price_range: 1An ad with no published price came back inside the price filter; rows outside the range you asked for are removed and counted

Measured on 2026-09-16. Paid highlighted ads open every page - all 100 rows of one car page that day - and are flagged is_highlighted rather than removed, because they do match the search. Classified ads come and go - the rows above are dated.

What was checked, and what milanuncios leaves out

Measured on 2026-09-16: 88 live calls across the four actions with no failure, 75 controlled checks including every filter, and 16 ads compared with their own pages. Four of these lines go against us.

Marketplace, motor and real estate

Every marketplace category, cars, off-roaders, classic cars, motorbikes, vans, trucks, caravans, campervans and quads, and 14 property types for sale and rent plus flat-shares and holiday rentals. Spain only, prices in EUR.

Every filter narrows, every row matches

Each filter was run against its unfiltered total in the same minute and every returned row checked: 'iphone 13', 1,290 ads, became 322 like new and 536 shipped; SEAT Ibiza, 4,535, became 1,702 diesel and 233 automatic.

Checked against the ad page

On 16 ads across bikes, phones, furniture, cars, motorbikes, rentals, sales and services, the title, price, seller type, photo count, province, city, reserved flag and publication date matched each ad's own page.

Prices that are not simply a price are labelled

No published price, cash versus financed car prices, price drops and ads that slipped into a price filter each have their own field or count. Paid highlighted ads are flagged.

Speed

Median across 88 calls: a marketplace search 0.62 seconds, a car search 0.64 seconds, a property search 1.22 seconds, an ad 0.58 seconds. The slowest call measured took 2.1 seconds.

Against us: no sorting

Results come in milanuncios' own order - paid highlighted ads first, then the most recently renewed. Price and date sorting are not available; pages reach the 8,200th result of a search.

Against us: private sellers are not named

A private seller's name, avatar, postcode and the map position of private property ads are left out on purpose. Professional sellers are named.

Against us: some details are sparse

Seller reviews existed on 1 of 16 checked ads and an energy certificate on 1 of 4 property ads. A motorbike's full ad record carries no year or mileage - its search row does.

Against us: no phone numbers and no sold status

milanuncios keeps phone numbers out of the ad data, and removed ads simply disappear (NOT_FOUND) rather than showing as sold.

What people build with milanuncios

The jobs this data is most often used for.

4

endpoints

1

credit per call

01

Car dealers and valuation tools track used-car cash and financed prices, price drops and mileage by make, model, year, fuel and province with cars/search.

02

Property analysts follow asking rents and sale prices, price per m², bedrooms and surface by province and city, across flats, houses, premises and garages, with real_estate/search.

03

Resale and pricing tools compare second-hand prices by condition and shipping while keeping unpublished prices out of the averages.

04

Market-mapping teams measure how much of a category is professional versus private and how much is paid highlighting, without collecting private sellers' personal data.

What milanuncios 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 252 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/milanuncios/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"bicicleta"}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/milanuncios/v1/search",
    headers={"x-api-key": REEF_KEY},
    json={
  "query": "bicicleta"
},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up milanuncios.

Get a free key →
Which parts of milanuncios does the API cover?

The whole site in three search actions. search covers every marketplace category with milanuncios' own category ids - 1,290 'iphone 13' ads on 2026-09-16. cars/search covers cars, off-roaders, classic cars, motorbikes, vans, trucks, caravans, campervans and quads - 4,535 SEAT Ibiza that day. real_estate/search covers 14 property types for sale and rent plus flat-shares and holiday rentals - 2,773 flats for rent in Barcelona province. listing returns the full ad from any category. milanuncios is Spain only; prices are in EUR.

Is a private seller's name or phone number included?

No. A private seller's name, avatar and postcode are left out, and so are the map coordinates milanuncios attaches to private property ads - the region, province and city stay. milanuncios does not put phone numbers in the ad data; the API says whether the seller accepts chat, a contact form or calls. For professional sellers the business name is returned.

What does a price of null mean?

That the seller published no price. milanuncios sends 0 € for these ads - services, wanted ads, 'a consultar' - and the API returns null with price_not_published true, so they never drag an average down. A price that was lowered carries previous_price and price_drop_pct. Car dealers' ads carry the cash price in price and the financed price in financed_price.

Are paid or highlighted ads marked?

Yes. milanuncios places paid highlighted (destacado) ads at the top of every results page. They match your search, so they stay in the results, each with is_highlighted true, and every page reports highlighted_count. A separate paid top-ad list, when milanuncios returns one, is kept out of the results and counted; include_sponsored returns it apart.

Do the filters really narrow the results?

Each one was checked live on 2026-09-16: the filtered total had to be smaller than the unfiltered one, and every returned row had to match. For 'iphone 13' (1,290 ads): private sellers 1,002, like new 322, shipped 536, price dropped 46, Madrid province 163. For SEAT Ibiza (4,535): 2015 to 2018 659, under 80,000 km 1,329, diesel 1,702, automatic 233. For flats for rent in Barcelona province (2,773): 3 bedrooms or more 868, 60 to 90 m² 954.

Can I sort by price or date?

No. milanuncios returns its own order - paid highlighted ads first, then the most recently renewed ads - and the API says so in sort_applied. Use price_min and price_max to narrow by price instead. Pages go up to the 8,200th result of a search; narrow the search to see further.

Why is an ad from another province in my province search?

Some dealers advertise in more provinces than the one they are in, and milanuncios includes them in each. The row keeps the dealer's own province and lists the others in location.extra_provinces, so you can keep or drop them.

What does milanuncios not publish?

Phone numbers and e-mail addresses. A price for services and wanted ads. Reviews for most sellers - 1 of 16 checked ads had one. The car model as a separate field (it is in the title; the make comes separately). Year and mileage in a motorbike's full ad record - they are on its search row. A sold status: removed ads return NOT_FOUND.

What is the milanuncios API?

milanuncios API is a ReefAPI endpoint group for spain's largest classifieds: marketplace, cars and real estate as json. It returns live JSON through POST requests under /milanuncios/v1.

Is the milanuncios API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. milanuncios calls use the same shared credit balance as every other ReefAPI engine.

Do I need a milanuncios login or account?

No login to milanuncios 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 milanuncios 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 milanuncios API use?

milanuncios actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call milanuncios from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call milanuncios actions with the same key, credit pool and JSON envelope used by normal REST requests.

16 Classifieds & Second-hand APIs on the same key

One key, one credit pool, one response envelope. If you are pulling milanuncios, 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 251 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-16.