Milanuncios Scraper avatar

Milanuncios Scraper

Pricing

from $0.90 / 1,000 listings

Go to Apify Store
Milanuncios Scraper

Milanuncios Scraper

Scrape Milanuncios.com classified listings — cars, real estate, jobs, electronics, phones and more. Filter by keyword, category, price, seller type, and shipping. Export full listing, seller, and shop data as JSON, CSV, or Excel.

Pricing

from $0.90 / 1,000 listings

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

15 hours ago

Last modified

Categories

Share

Milanuncios Scraper

Scrape classified listings from Milanuncios.com — Spain's largest second-hand marketplace for cars, real estate, jobs, electronics, phones, fashion and more. Search by keyword and category, filter by price and seller type, and export full listing and seller data as JSON, CSV, or Excel.

Search any keyword or one of nine top categories, filter by price range, seller type (professional / private), transaction type, and shipping — and get the complete listing for every result: full description, typed attributes, all photos, seller profile with rating, and engagement stats.

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this Actor.

Actor: parsebird/milanuncios-scraper (Apify). Scrapes Milanuncios.com (Spanish classifieds). Call with ApifyClient.
Input: { "text": "bmw x5", "category": "1", "sort": "cheap", "sellerType": "professional",
"transaction": "supply", "priceFrom": 15000, "priceTo": 40000, "isShippable": false,
"fetchDetails": true, "maxResults": 200 }
`text` and/or `category` required. category ids: 1 Motor, 32 Inmobiliaria, 3 Empleo, 2 Informática, 83 Telefonía,
39 Juegos, 30 Casa y Jardín, 43 Moda, 31 Deportes; "" = all. sort: relevance|newest|cheap|expensive.
sellerType: professional|private. transaction: supply|demand. fetchDetails=false is a faster search-only mode.
Output: one item per listing — id, title, description, url, listingUrl, price{value,label,includeTaxes}, previousPrice,
location{city,province,region}, categories[], category, attributes{name:{raw,formatted}}, photos[], photosCount,
authorId, authorName, author{id,userName,score,reviewCount,location{lat,long,city,province,zipCode},avatarSrc},
stats{views,favorites,shares,listings}, type, sellerType, transaction, shippingType, contactMethods,
publicationDate, updateDate, sortDate, scrapedAt.
Requires Apify Proxy RESIDENTIAL group, country ES (the default). Pricing: pay-per-result.

What does Milanuncios Scraper do?

Milanuncios has no public API and blocks automated access. This Actor renders the site like a real browser from a Spanish residential IP and returns clean, structured data.

  • 🚗 Every category — Motor, Inmobiliaria, Empleo, Informática, Telefonía, Juegos, Casa y Jardín, Moda, Deportes, or all at once.
  • 🔎 Keyword + filter search — price range, professional vs. private sellers, for-sale vs. wanted, shipping availability, and four sort orders.
  • 📋 Full listing detail — description, all photos at full resolution, and typed attributes (kilometres, year, fuel, transmission, hp, doors, warranty for cars; condition, colour for phones; and so on).
  • 🧑 Seller data — seller type, rating (score and review count), and location with latitude/longitude.
  • 📈 Engagement stats — favourites, shares, and the seller's total listing count.
  • Fast search-only mode — set fetchDetails: false to skip the per-listing pages when you only need the search summary.

Input parameters

text and/or category is required.

ParameterTypeDefaultDescription
textstringSearch query, e.g. "iphone 15", "bmw x5".
categorystring"" (all)Category id: 1 Motor, 32 Inmobiliaria, 3 Empleo, 2 Informática, 83 Telefonía, 39 Juegos, 30 Casa y Jardín, 43 Moda, 31 Deportes.
sortstringrelevancerelevance, newest, cheap, expensive.
sellerTypestringprofessional or private.
transactionstringsupply (for sale) or demand (wanted).
priceFromintegerMinimum price in EUR.
priceTointegerMaximum price in EUR.
isShippablebooleanfalseOnly listings that offer shipping.
fetchDetailsbooleantrueOpen each listing for full detail. Turn off for a faster, lighter run.
maxResultsinteger100Maximum listings to extract (1–2000).
proxyConfigurationobjectApify Proxy RESIDENTIAL / ESRequired. Milanuncios blocks non-residential traffic.

Input examples

Basic search

{ "text": "iphone 15", "maxResults": 100 }

Category filter

{ "category": "1", "sort": "newest", "maxResults": 500 }

Advanced filtering

{ "text": "bmw x5", "category": "1", "sellerType": "professional", "priceFrom": 15000, "priceTo": 40000, "sort": "cheap", "maxResults": 200 }

Output example

{
"id": "578414171",
"title": "BMW - XM",
"description": "Bienvenido a gtcars premium ...",
"url": "/bmw-de-segunda-mano/bmw-xm-578414171.htm",
"listingUrl": "https://www.milanuncios.com/bmw-de-segunda-mano/bmw-xm-578414171.htm",
"price": { "value": 124900, "label": "124.900 €", "includeTaxes": true },
"previousPrice": { "value": 129900, "label": "129.900 €" },
"location": {
"city": { "id": 54264, "name": "San Miguel de Abona", "slug": "san-miguel-de-abona" },
"province": { "id": 38, "name": "Tenerife", "slug": "tenerife" },
"region": { "id": 62, "name": "Canarias", "slug": "canarias" }
},
"categories": [
{ "id": 1, "name": "Motor", "slug": "motor" },
{ "id": 13, "name": "Coches", "slug": "coches-de-segunda-mano" },
{ "id": 805, "name": "BMW", "slug": "bmw-de-segunda-mano" }
],
"attributes": {
"kilometers": { "raw": "25800", "formatted": "25.800 kms" },
"year": { "raw": "2023", "formatted": "2023" },
"fuel": { "raw": "other", "formatted": "otro" },
"transmission": { "raw": "automatic", "formatted": "automático" },
"hp": { "raw": "653", "formatted": "653 CV" }
},
"authorId": "207754224",
"authorName": "GT Cars Premium Tenerife",
"author": {
"id": "207754224",
"userName": "GT Cars Premium Tenerife",
"score": 4.6,
"reviewCount": 38,
"isEmailVerified": true,
"avatarSrc": "https://images.milanuncios.com/api/v1/ma-user-profile-pro/images/...",
"location": { "city": "San Miguel de Abona", "province": "Tenerife", "zipCode": "38620", "latitude": 28.024078, "longitude": -16.624159 }
},
"photos": ["https://images.milanuncios.com/api/v1/ma-ad-media-pro/images/327b7ea8-...", "..."],
"photosCount": 18,
"stats": { "favorites": 0, "shares": 1, "listings": 75 },
"publicationDate": "2026-01-28T12:05:37Z",
"updateDate": "2026-02-02T09:06:33Z",
"sortDate": "2026-02-02T10:04:53Z",
"type": "professional",
"sellerType": "PROFESSIONAL",
"transaction": "supply",
"shippingType": "maexpress",
"contactMethods": { "chat": false, "form": true, "phone": true },
"scrapedAt": "2026-02-02T09:52:28.762592+00:00"
}

Fields present depend on the category and on what the seller filled in. Vehicle listings carry vehicle attributes, phone listings carry phone attributes, and so on.

Use cases

  • Price research & arbitrage — track asking prices for a car model, phone, or property type across Spain.
  • Dealer intelligence — map professional sellers, their rating, inventory size, and locations.
  • Market monitoring — schedule the Actor and watch new listings for a saved search.
  • Lead generation — collect professional-seller names, ratings, and locations for outreach.
  • Data sets — build a structured second-hand-market dataset for analysis or ML.

How it works

  1. The Actor builds a Milanuncios search URL from your text, category, and filters.
  2. It loads each results page from a Spanish residential IP, passing the site's anti-bot check, and reads the embedded listing data.
  3. It paginates until maxResults is reached.
  4. When fetchDetails is on, it opens each listing page and merges the full description, seller profile, stats, photos, and attributes.
  5. Each listing is pushed to the dataset. Export as JSON, CSV, Excel, XML, or RSS, or wire it into Make, Zapier, Google Sheets, and Slack.

Using the Actor via API

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("parsebird/milanuncios-scraper").call(run_input={
"text": "bmw x5",
"category": "1",
"priceFrom": 15000,
"priceTo": 40000,
"sort": "cheap",
"maxResults": 200,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], "—", item.get("price"))

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('parsebird/milanuncios-scraper').call({
category: '32',
sort: 'newest',
maxResults: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

The Actor runs on the Apify platform: schedule it, call it over the REST API, trigger webhooks, and export to JSON, CSV, Excel, XML, or RSS.

Pricing

This Actor uses the pay-per-result pricing model — you are charged per listing, regardless of compute time.

PlanPrice per listingPrice per 1,000 listings
Free$0.0012$1.20
Bronze$0.0011$1.10
Silver$0.0010$1.00
Gold$0.0009$0.90

Scraping 1,000 listings on the Free plan costs about $1.20.

FAQ

Do I need a proxy? Yes. Milanuncios blocks datacenter traffic, so the Actor requires Apify Proxy with the RESIDENTIAL group and country ES — this is the default; just keep Proxy Configuration enabled.

How do I find a category id? Use the table above. Set category: "" to search every category at once.

What is fetchDetails? When on (the default), the Actor opens each listing for the full description, seller profile, stats, and every photo. When off, it returns only the search-results summary — faster and cheaper.

Why are some fields missing on a listing? Milanuncios only stores what the seller entered. Some listings have no price, no attributes, or no photos, and only sellers with reviews carry a score / reviewCount.

How many listings can I get per run? Up to 2,000. For a bigger crawl, split the work by category, price band, or region and schedule multiple runs.

Can I schedule recurring runs? Yes — use Apify's scheduler and route new listings to a webhook or integration.

This Actor collects only publicly available listing and seller information from Milanuncios — data any visitor can see without logging in. It does not access private data or defeat authentication. You are responsible for using the output in line with Milanuncios' terms and applicable law, including the GDPR where personal data (seller names, locations, contact routes) is involved. Do not use the data to spam sellers. Seek legal advice before large-scale or commercial redistribution.