Milanuncios Scraper avatar

Milanuncios Scraper

Pricing

from $3.00 / 1,000 ads

Go to Apify Store
Milanuncios Scraper

Milanuncios Scraper

Scrape Milanuncios classifieds by keyword, category or ad URL. One row per ad: title, price, city/province, 4-level category tree, images, publish date and seller type (private vs professional). Spanish residential proxy included. Optional attributes + contact flags.

Pricing

from $3.00 / 1,000 ads

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

2 days ago

Last modified

Share

Turn any Milanuncios search into clean, structured classifieds data. Search by keyword (iphone 15, opel astra, piso alquiler), or paste search, category and ad URLs — and get one flat row per ad with title, price, city and province, a 4-level category tree, images, publish date and — crucially — whether the seller is private or professional.

Built for used-car and dealer intelligence, property research, price monitoring and Spanish classifieds analysis.

How it works

How the Milanuncios Scraper works

✨ Why use this scraper?

  • Spanish residential proxy included — Milanuncios refuses non-Spanish traffic outright: a normal request gets HTTP 405 and a captcha, no matter the fingerprint. This actor ships with a Spanish residential pool at no extra cost, so it just works. That's the whole reason most Milanuncios scrapers return nothing.
  • Real used-car specs — car ads return kilometers, year, fuel, transmission, hp, doors, color, warranty and the Spanish environmentalLabel (0 / ECO / C / B), in both machine-readable and display form ("39681" and "39.681 kms"). Filter and sort on them directly.
  • Private vs professional sellers — every row carries sellerType, so you can isolate dealers from private sellers in one filter. That's the split that matters for dealer intelligence and lead-gen.
  • Supply vs demand ads — Milanuncios carries wanted ads alongside for-sale ads; sellType separates them so you don't pollute price analysis with "compro" listings.
  • 4-level category treeMotor > Coches > Volkswagen, Telefonía > Móviles > Teléfonos móviles > iPhone. Structured levels, not a single label.
  • Engagement + seller volume — deep mode returns favourites, shares and the seller's total live listing count, which tells you a dealer's inventory size at a glance.
  • Fast mode or deep mode — feed rows already include price, description, city/province, category tree and seller type. Turn on deep mode for attributes, contact flags and counters. You choose cost vs depth.
  • JSON, CSV, Excel or API — pipe straight into your sheet, CRM or pipeline. Billed per ad.

🎯 Use cases

You are a…Use it to…
Used-car dealer / analystPull local inventory with km, year, fuel, transmission and power for market pricing
Dealer-network researcherIsolate sellerType: professional and size each dealer by listing count
Property analystTrack listings by province and category over time
Price-monitoring / repricingFollow asking prices for a model or product across Spain
Reseller / flipperSource underpriced private-seller ads before dealers list them
Market researcherMeasure supply, price distribution and category mix by province

📥 Supported inputs

InputExampleWhat it does
Search keywordiphone 15, opel astraBuilds & paginates that search feed
Search URLhttps://www.milanuncios.com/anuncios/?s=iphonePaginates that search
Category URLhttps://www.milanuncios.com/coches-de-segunda-mano/Paginates that whole category
Ad URLhttps://www.milanuncios.com/iphone/…-593529484.htmScrapes that single ad in full detail

Not supported: private messages, buyer data, and anything behind a login. The actor reads only public Milanuncios pages.

Note on phone numbers. Milanuncios does not publish seller phone numbers on the page — it exposes only which contact channels an ad offers. Rows therefore carry hasPhone, hasChat and hasContactForm flags rather than a raw number.

⚙️ How it works

  1. Classify every input — keywords become search URLs; pasted URLs are sorted into search / category / ad.
  2. Unlock each page through a Spanish residential exit. The geo-block is per-IP and flaky, so each page races a small batch of fresh sessions and takes the first real response.
  3. Parse the embedded __INITIAL_PROPS__ JSON — the feed's ad array, and each ad page's full object.
  4. Enrich (optional) — for each ad, open its page to add structured attributes, contact flags, favourites and the seller's listing count.
  5. Push one flat, deduplicated row per ad to the dataset.

🔧 Input configuration

FieldTypeDefaultDescription
searchQueriesarray["iphone 15"]Keywords to search. Each is paginated.
startUrlsarray[]Search, category and/or ad URLs. Auto-classified.
scrapeDetailsbooleanfalseOpen each ad page (attributes, contact flags, counters).
maxItemsinteger1000Hard cap on rows for the whole run.
maxItemsPerSearchinteger1000Cap per keyword / search URL (~41 ads per page).
maxConcurrencyinteger6Parallel requests — keep moderate, Milanuncios rate-limits.
maxRequestRetriesinteger12Retry budget; each retry rotates to a fresh Spanish IP.
proxyobjectbuilt-inOptional override — ES residential ships at no extra cost.

📤 Output overview

One row per ad.

Fast mode (feed): adId, title, description, price, sellerType, sellType, location (city, province, region), categoryTree/categoryPath, images, isNew, isReserved, isHighlighted, publishDate, url.

Deep mode adds: attributes + attributesFormatted, hasPhone/hasChat/hasContactForm, favorites, shares, sellerListings, updateDate, priceIndicator.

🧾 Output samples

A car listing (deep mode):

{
"rowType": "listing",
"adId": "597677383",
"url": "https://www.milanuncios.com/volkswagen-de-segunda-mano/…-597677383.htm",
"title": "VOLKSWAGEN Golf Advance 1.6 TDI BMT DSG",
"price": 13900,
"currency": "EUR",
"sellerType": "professional",
"sellType": "supply",
"location": { "cityName": "Santa Coloma de Queralt", "provinceName": "Tarragona" },
"categoryPath": "Motor > Coches > Volkswagen",
"attributes": {
"kilometers": "106500", "year": "2017", "fuel": "diesel",
"transmission": "AUTOMATIC", "hp": "110", "doors": "5", "color": "gris"
},
"attributesFormatted": { "kilometers": "106.500 kms", "hp": "110 CV" },
"hasPhone": true, "hasChat": true,
"favorites": 8, "sellerListings": 12,
"publishDate": "2026-05-03T11:18:46.000Z"
}

A phone listing (deep mode) — private seller, no attribute set:

{
"adId": "593529484",
"title": "Iphone 15",
"price": 445,
"sellerType": "private",
"location": { "cityName": "Córdoba", "provinceName": "Córdoba" },
"categoryPath": "Telefonía > Móviles > Teléfonos móviles > iPhone",
"attributes": null,
"hasPhone": false, "hasChat": true, "hasContactForm": true,
"favorites": 1, "sellerListings": 6
}

🔑 Key output fields

FieldDescription
adIdMilanuncios ad id (stable dedup key)
title / descriptionAd title and full description
price / currencyNumeric price; Milanuncios is EUR-only
sellerTypeprivate or professional — dealer vs individual
sellTypesupply (for sale) or demand (wanted)
locationCity, province and region with Milanuncios' ids
categoryTree / categoryPath4-level category path and its structured levels
imagesArray of image URLs
isNew / isReserved / isHighlightedAd state flags
publishDate / updateDateWhen the ad was posted and last updated (ISO)
attributesCategory attributes, raw values (deep mode)
attributesFormattedThe same attributes as displayed (deep mode)
hasPhone / hasChat / hasContactFormContact channels offered (deep mode)
favorites / shares / sellerListingsEngagement and the seller's live listing count (deep mode)

❓ FAQ

Why do other Milanuncios scrapers return nothing? Milanuncios geo-blocks: from outside Spain it answers HTTP 405 with a captcha, regardless of browser fingerprint. It needs a Spanish residential IP, which this actor bundles.

Do I need my own proxy? No. Spanish residential proxy is included at no extra cost. You can override it in the proxy field if you have your own Spanish pool.

Do I get seller phone numbers? No. Milanuncios does not publish the number on the page — only which contact channels the ad offers. You get hasPhone, hasChat and hasContactForm instead.

Which categories return attributes? Ones where Milanuncios itself uses structured filters — cars, motorbikes and property are the richest. Most phone and general second-hand ads carry no attribute set, so attributes is null there. That reflects the source, not a parsing gap.

Can I separate dealers from private sellers? Yes — sellerType is on every row, including in fast mode, and deep mode adds sellerListings so you can size each dealer's inventory.

How many results per search? Milanuncios returns ~41 ads per page. The actor walks up to 100 pages per feed (~4,100 ads). Use several keywords or categories to go wider.

🛟 Support

Found a bug or need a field added? Open an issue on the actor's Issues tab in the Apify Console and we'll take a look.

🚀 Additional services

Need a different marketplace, site, or a custom schema? We build and maintain scrapers across classifieds, real estate, jobs and e-commerce.

🔎 Explore more scrapers

  • Wallapop Scraper
  • OLX Marketplace Scraper (7 countries)
  • OfferUp Marketplace Scraper
  • Kleinanzeigen Scraper
  • Craigslist Scraper

⚠️ Disclaimer

This actor scrapes only publicly available ad data from Milanuncios. It does not access private messages, buyer data, or any content behind a login, and it does not collect personal data beyond the public ad information Milanuncios itself displays. You are responsible for using the scraped data in compliance with Milanuncios' Terms of Service, applicable laws (including GDPR and other data-protection and consumer-protection laws), and any restrictions on automated access. Use the output lawfully and ethically.

🔍 SEO Keywords

Milanuncios scraper, Milanuncios API, Milanuncios data extractor, scrape Milanuncios ads, Milanuncios coches scraper, Milanuncios car scraper, Milanuncios property scraper, Spanish classifieds scraper, segunda mano scraper, used car data Spain, Milanuncios price monitoring, dealer inventory scraper Spain, Milanuncios JSON export, anuncios clasificados scraper.