Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Milanuncios Scraper icon

Milanuncios Scraper

Scrape Milanuncios listings in Spain. Price in EUR, category, province, city, seller type, photos, publish date and URL. $1.00 per 1,000 listings.

78 runs on Apify $0.001 per listing ($1 / 1,000)
Run this in the cloudRun on Apify →

Developer & Research Tools

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust query, searchUrls, provinces (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.001 per listing = $1 per 1,000

You are charged forWhenPrice
Listing scrapedOne Milanuncios listing returned in the dataset. Sample rows, diagnostics and listings dropped by the province filter are not charged.$0.001

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-08, and they are what you are actually charged.

Inputs

FieldWhat it doesType
queryWhat to search for, in Spanish - for example "sofa cama", "iphone 15", "piso alquiler". Leave empty to browse a whole category.string
searchUrlsOptional. Paste Milanuncios search or category URLs instead of filling in the fields above, e.g. https://www.milanuncios.com/coches-de-segunda-mano/?desde=5000&vendedor=part. The category, search text, price range, seller type and order in the URL are all read.array
provincesOptional. Restrict to one or more Spanish provinces by name ("Madrid", "Barcelona", "A Coruña", "Valencia") or INE code 1-52. Milanuncios' own province filter also returns neighbouring provinces, so this actor filters the results exactly - listings outside your provinces are dropped and never charged.array
sellerTypeReturn only private sellers (particulares) or only professional sellers (dealers, agencies, shops).string
transactionMilanuncios carries both offers (someone selling) and wanted ads (someone looking to buy).string
categoryOptional. Milanuncios category by name, slug or id. Sections: Motor, Inmobiliaria, Empleo, Telefonía, Informática, Casa y Jardín, Moda y complementos, Deportes y náutica, Mascotas y agricultura, Aficiones y ocio, Imagen y Sonido, Juegos, Bebés, Formación y libros, Servicios, Negocios, Comunidad. Sub-categories work too (Coches, Motos, Furgonetas, Viviendas, Móviles, Portátiles). 2302 categories are recognised.array
sortNewest first and Oldest first only work inside the Motor section - Milanuncios returns nothing for them in other categories, so the actor falls back to Most relevant and says so in the log.string
minPriceOptional lower price bound.integer
maxItemsHow many listings to return in total across all searches. Each returned listing is one charged result. Milanuncios caps any single search at 8300 results; add provinces, price bands or sub-categories to go past that.integer
maxPriceOptional upper price bound.integer

What you get

A structured dataset — each result includes fields like:

titlepricecurrencycategoryNamesectionNamesellerTypeprovincecitypublishedAturl

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Developer & Research Tools

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

GitHub Scraper iconDeveloper & Research Tools

GitHub Scraper

Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.

18 use cases

Stack Overflow / Stack Exchange Scraper iconDeveloper & Research Tools

Stack Overflow / Stack Exchange Scraper

Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.

2 use cases

Package Registry Scraper (npm + PyPI) iconDeveloper & Research Tools

Package Registry Scraper (npm + PyPI)

Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.

2 use cases

arXiv Scraper iconDeveloper & Research Tools

arXiv Scraper

Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.

2 use cases

OpenAlex Scholarly Works Scraper iconDeveloper & Research Tools

OpenAlex Scholarly Works Scraper

Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.

2 use cases

Crossref Scholarly Works Scraper iconDeveloper & Research Tools

Crossref Scholarly Works Scraper

Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.

2 use cases

See all Developer & Research Tools →

Milanuncios Scraper: Spanish classified ads by search term, category, province or a URL you paste

Type a Spanish search term, pick a category, or paste a Milanuncios results page, and every ad comes back as a row: id, title, full description, price in euros, category path, province and city, seller type, photos, publish date and the link. No account, nothing to install.

The awkward part first. Rows are written at the end, not as they arrive. Everything is collected first and pushed when the searches finish, so a run that hits its time limit delivers nothing at all. Keep Maximum listings sensible and take a big job in several runs rather than one.

InputSpanish search terms, categories and provinces, or Milanuncios search URLs
OutputOne row per listing
Ceiling50,000 listings per run. About 8,300 per search is Milanuncios' own limit
Account neededNone, and nothing to install
Price$1.00 per 1,000 listings, flat on every plan

🏷️ What Milanuncios Scraper does

Fill in the form or paste links. The form is a Spanish search term plus any mix of category, province, seller type, price band and sort order. A pasted URL carries its own category, search text, price range and seller type across.

Provinces are filtered here, not by Milanuncios. Milanuncios treats a province as a nudge and happily returns neighbouring ones, so the run checks each ad against the provinces you asked for and drops the rest before they reach the dataset. Those never get billed. The side effect is that deep pages of a province-narrowed search thin out, and the search stops once a long stretch turns up nothing in your provinces.

Categories take a name, a slug or an id, at section level like Motor and Inmobiliaria or leaf level like Coches and Portátiles. 2,302 of them are recognised, and anything else comes back as an uncharged BAD_INPUT row rather than being quietly ignored.

Two things to know about sorting. Newest first and oldest first only work inside Motor. Everywhere else Milanuncios returns nothing for them, so the run falls back to most relevant and says so in the log. And a pasted URL's own sort is not used: whatever is set in the Sort order field wins, so set it to match your link.

📥 What you give it

{
  "query": "sofa cama",
  "provinces": ["Madrid", "Barcelona"],
  "sellerType": "private",
  "minPrice": 100,
  "maxPrice": 800,
  "maxItems": 200
}
FieldDefaultWhat it is
querybox starts at sofa camaWhat to search for, in Spanish. Leave it empty to browse a whole category.
searchUrlsnoneMilanuncios search or category pages pasted from the site.
provincesall of SpainSpanish provinces by name or INE code 1 to 52. Ads outside them are dropped uncharged.
categoryall categoriesBy name, slug or id. Section or leaf level both work.
sellerTypeanyprivate for particulares, professional for dealers, agencies and shops.
transactionsupplyThings for sale. demand gives you wanted ads instead.
sortrelevanceAlso cheap and expensive everywhere, newest and oldest inside Motor only.
minPrice, maxPricenonePrice bounds in euros.
maxItems100Total listings across every search in the run, up to 50,000.
proxyConfigurationleave it aloneOptional, under Advanced. Only if you want the run to go out through a particular network of your own.

Provinces on their own are not a search. Pair them with a term, a category or a URL, or the run comes back with just the sample row.

📤 What you get back

A real row from a run on 14 September 2026:

{
  "listingId": "614581290",
  "title": "sofá cama",
  "description": "se vende sofá cama a estrenar con transporte gratis y garantía ",
  "price": 545,
  "priceText": "545 €",
  "currency": "EUR",
  "previousPrice": null,
  "priceIncludesTaxes": null,
  "sellerType": "private",
  "sellerId": "239560870",
  "sellerName": "MUEBLES OUTLET GRD ",
  "categoryId": 486,
  "categoryName": "Sillas sofás sillones",
  "categorySlug": "sillas-sofas-y-sillones",
  "sectionId": 30,
  "sectionName": "Casa y Jardín",
  "categoryPath": "Casa y Jardín > Muebles > Sillas sofás sillones",
  "province": "Navarra",
  "provinceId": 31,
  "city": "Arguedas",
  "cityId": 36089,
  "region": "Navarra",
  "latitude": null,
  "longitude": null,
  "publishedAt": "2026-09-13T13:24:28Z",
  "updatedAt": "2026-09-13T13:24:28Z",
  "transaction": "supply",
  "isHighlighted": false,
  "isNew": false,
  "reserveStatus": "RELEASED",
  "contactByPhone": false,
  "contactByChat": true,
  "attributes": { "itemCondition": "BRAND_NEW" },
  "images": [
    "https://images.milanuncios.com/api/v1/ma-ad-media-pro/images/66204d16-99b8-4c69-b4e9-1ae01217930f?rule=hw396_70",
    "https://images.milanuncios.com/api/v1/ma-ad-media-pro/images/ee28db46-af9d-4000-a761-44c930483247?rule=hw396_70"
  ],
  "imageCount": 2,
  "url": "https://www.milanuncios.com/sillas-sofas-y-sillones/sofa-cama-614581290.htm",
  "scrapedAt": "2026-09-14T05:45:45.026Z",
  "searchUrl": null
}
FieldWhat it is
descriptionThe full ad text, not a preview.
sellerTypeprivate or professional, taken from Milanuncios' own classification of the ad.
categoryPathThe readable trail, with sectionName and categoryName split out for grouping.
latitude, longitudeUsually null. Very few ads carry coordinates. province and city are the reliable location fields.
contactByPhone, contactByChatFlags saying how the seller accepts contact. No phone number is included.
attributesMilanuncios' raw per-category map, so a car ad and a sofa ad carry different keys.
imagesPhoto URLs at 396 px, which is the size Milanuncios serves here.
searchUrlThe pasted URL that produced this row, or null when it came from the form.

🧾 Reading the output

RowHow to spot itBilled
A listingNo _sample or _diagnostic key on ityes
The sample row_sample: true and charged: falseno
A diagnostic_diagnostic: true, charged: false and an errorCodeno

Listing rows carry no charged field. The flag is only on the sample and diagnostic rows, to mark them as not real results.

CodeWhat it means
BAD_INPUTA province, category or URL Milanuncios does not recognise.
NO_RESULTSThat search matched nothing.
BLOCKEDMilanuncios refused a page of results.
BAD_RESPONSEMilanuncios answered with something this run could not read.

▶️ How to run it

1. Open Milanuncios Scraper and click Try for free. 2. Type your Spanish search into Search terms, or paste links into Milanuncios search URLs. 3. Open Narrow it down to set provinces, a category, the seller type or a price band. 4. Set Maximum listings under Limits. Start around 25 to see what the rows look like. 5. Click Start, then download the dataset as JSON, CSV or Excel, or read it from the Apify API.

💰 How much does it cost?

$1.00 per 1,000 listings. Flat on every Apify plan, with no volume tiers.

One billed row per listing delivered. The sample row is not billed, diagnostic rows are not billed, and an ad dropped because it sits outside your provinces never reaches the dataset and is not billed.

💡 What people use it for

  • Used car pricing across provinces, using attributes for the per-model specs Milanuncios carries.
  • Property research in one region, where categoryPath separates sale from rental cleanly.
  • Building a dealer list by keeping rows where sellerType is professional.
  • Watching what is new in Motor with sort on newest and a small cap, diffing on listingId.
  • Reading demand instead of supply: switch transaction to demand for what people are looking for.

🚧 What it does not do

  • No phone numbers. The row says whether a seller accepts calls or chat, and nothing more.
  • No coordinates worth relying on. They are almost always null. Use province and city.
  • Photos come at 396 px. That is the size served here, and no larger version is available.
  • About 8,300 listings per search is Milanuncios' ceiling, not ours. Add provinces, price bands

or sub-categories to get past it.

  • Newest and oldest sorting only works in Motor. Elsewhere the run quietly uses most relevant.
  • A pasted URL's own sort is ignored. Set the sort field to match your link.
  • Rows arrive at the end. A run that times out delivers nothing, so keep big jobs split.
  • Provinces alone will not start a search. Pair them with a term, a category or a URL.

🧭 Which classifieds scraper do you need?

If you wantUse
Spanish classified ads from MilanunciosThis one
Homes in Spain, Italy and Portugal from IdealistaIdealista Scraper
Homes in Spain from FotocasaFotocasa Scraper
Russian classified ads from AvitoAvito Listings Scraper
Brazilian classified ads from OLXOLX Brazil Scraper

❓ Questions people ask

Can I search in English? The term goes to Milanuncios as you typed it and its index is Spanish, so English returns very little. Province names have to be Spanish too, or use the INE code.

Why are there listings from a neighbouring province? There should not be. Milanuncios itself mixes them in, and they are dropped here before billing. If you see one, send the run ID.

How do I get more than 8,300 for one search? Split it. Several provinces, several price bands, or narrower categories, all in the same run.

Why did my newest-first sort not work? Outside Motor, Milanuncios returns nothing for that order, so the run falls back to most relevant. The log says when that happens.

Can I get wanted ads rather than things for sale? Yes. Set Offers or wanted ads to wanted.

Is this legal? These are public ads. They carry personal data, which GDPR and similar laws cover, so have a reason for collecting it. Apify's write-up on scraping and the law is a good starting point, and we are not lawyers.

🆘 If something breaks

Open the Issues tab on the actor page. Send the search term or URL you used and the run ID. The errorCode on the diagnostic row usually names the problem on its own.