Kleinanzeigen.de Scraper with Contacts & Descriptions
Pricing
$1.49 / 1,000 results
Kleinanzeigen.de Scraper with Contacts & Descriptions
Scrape Kleinanzeigen.de at scale with clean, structured listings. Capture titles, prices, descriptions, photos, locations and seller details for local offers and services. Ideal for price tracking, lead gen, resale sourcing and market research.
Pricing
$1.49 / 1,000 results
Rating
5.0
(1)
Developer
Fatih Tahta
Maintained by CommunityActor stats
2
Bookmarked
33
Total users
5
Monthly active users
5 days ago
Last modified
Categories
Share
Kleinanzeigen.de Scraper | Enterprise Grade
Slug: fatihtahta/ebay-kleinanzeigen-scraper
Overview
Kleinanzeigen.de Scraper collects structured public listing records from Kleinanzeigen search terms, category pages, filtered result URLs, merchant profiles, and direct ad URLs. Each record can include listing identity, price, location, category path, public media URLs, seller context, listing attributes, and source provenance when those fields are publicly available. Kleinanzeigen.de is a major German classifieds marketplace, making its public listings useful for marketplace research, inventory monitoring, pricing analysis, local supply discovery, and operational reporting. The actor is designed for repeatable collection workflows where teams need consistent JSON records rather than manual page review. Results are delivered as structured Apify dataset records suitable for review, export, enrichment, BI workflows, and downstream processing. Use it for recurring acquisition jobs, scoped market snapshots, and automated research pipelines where dependable record shape matters more than one-off browsing.
Who Should Use This Actor
- Market research and analytics teams: collect structured extraction outputs for pricing, supply, category, geography, and seller analysis across Kleinanzeigen segments.
- Marketplace, catalog, and content teams: turn public listings into normalized records for catalog review, taxonomy mapping, inventory checks, and content quality workflows.
- Developers and data engineering teams: feed predictable JSON into downstream systems, warehouses, search indexes, enrichment pipelines, and reporting jobs.
- AI agents and workflow automations: acquire scoped marketplace records, summarize changes, route outliers, and trigger follow-up review without relying on manual browsing.
- Sales, sourcing, and lead enrichment teams: identify public sellers, merchant profiles, listing categories, and location signals for qualified outreach or company enrichment.
- Monitoring and operations teams: schedule repeated runs for listing availability, price movement, category movement, and operational watchlists.
- Real estate, vehicle, and commerce analysts: use category-specific filters to build focused datasets for houses, apartments, cars, electronics, home goods, and other public classified segments.
Common Use Cases
- Market intelligence: monitor public supply, pricing, categories, seller types, locations, and listing freshness for a defined marketplace segment.
- Competitive monitoring: track recurring search terms, filtered result pages, or merchant profiles to compare listing movement over time.
- Lead generation and sourcing: build scoped lists of public listings and sellers for review, qualification, enrichment, or operational routing.
- Catalog and directory building: populate owned databases with structured listing titles, categories, prices, media, locations, seller labels, and public URLs.
- Data enrichment: add current public attributes from Kleinanzeigen to existing CRM, BI, research, procurement, or inventory datasets.
- Recurring reporting: schedule runs for dashboards, alerts, periodic exports, and category or geography trend reporting.
- Agentic research workflows: let an AI agent collect a bounded dataset, compare it with a prior run, summarize changes, and hand records to the next workflow step.
- Segmented analysis: run separate inputs by query, category, location, price band, seller type, or source URL to keep downstream comparisons clean.
Real-World Questions This Data Can Answer
- Which Kleinanzeigen listings match a specific keyword, category, geography, seller type, or price range?
- Which public listings are new, removed, repriced, or changed when compared with a previous run?
- Which locations, categories, or seller groups have the strongest public supply for a target search term?
- Which records have enough title, price, location, seller, media, and attribute detail for review queues or dashboards?
- How do public asking prices differ across category segments, listing conditions, or local markets?
- Which merchant profiles or source URLs should be watched repeatedly for inventory movement?
- Which records are suitable for enrichment, sourcing, or follow-up based on stable listing IDs and public provenance fields?
Quick Start
- Choose either source URLs in
startUrls, search terms inqueries, or both. - Add scope controls such as
location,category, price range, seller type, shipping option, or category-specific filters when you need a narrower dataset. - Set a small
limitfor the first validation run. - Run the actor in Apify Console.
- Inspect the first dataset records to confirm the output shape and field coverage.
- Increase coverage, split segments, export results, or schedule the actor once the output is verified.
Input Parameters
Provide at least one direct source URL in startUrls or one search term in queries.
| Parameter | Type | Description | Default |
|---|---|---|---|
startUrls | array of strings | One Kleinanzeigen URL per line. Supports search pages, category pages, filtered result pages, /pro/ merchant profiles, and direct /s-anzeige/ listing URLs. | – |
queries | array of strings | One search term per line, such as a product name, brand, model, category, or market phrase. Each term is collected as its own source. | – |
location | string | City, district, or place name for search-query discovery, such as Frankfurt am Main or Berlin. Leave empty for Germany-wide query discovery. Direct URLs keep their own scope. | "" |
category | string enum | Kleinanzeigen category ID for search-query discovery. Leave empty for all categories. See "Category Values" below. | "" |
offer_type | string enum | Offer type for query discovery: "" all offer types, for_sale listings for sale, requested wanted ads and buy requests. | "" |
seller_type | string enum | Seller type for query discovery: "" all seller types, private individual sellers, business commercial sellers. | "" |
buy_now | boolean | When enabled, query discovery targets listings marked with direct purchase availability. Leave disabled for broader discovery. | false |
shipping | string enum | Shipping availability for query discovery: "" all shipping options, shipping_available, or pickup_only. | "" |
shipping_carrier | string enum | Carrier filter for query discovery: "" all carriers, dhl, or hermes. Use only when carrier availability matters. | "" |
min_price | integer | Minimum listing price in EUR for query discovery. Use with max_price to define a budget or market band. | – |
max_price | integer | Maximum listing price in EUR for query discovery. Use with min_price to exclude listings outside the target price band. | – |
condition | array of string enums | Goods-style condition filter where supported. Values: new, very_good, good, okay, defect. | [] |
car_make | string enum | Vehicle make for Autos searches. Values: "", audi, bmw, mercedes_benz, volkswagen, opel, ford, skoda, renault, seat, peugeot, fiat, hyundai, toyota, nissan, mazda, tesla, sonstige_autos. | "" |
car_model | string | Optional vehicle model to apply with car_make, such as A6, Golf, or Model 3. | "" |
min_mileage | integer | Minimum vehicle mileage in kilometers for Autos searches. | – |
max_mileage | integer | Maximum vehicle mileage in kilometers for Autos searches. | – |
min_first_registration_year | integer | Earliest first registration year for Autos searches. Minimum accepted value is 1900. | – |
max_first_registration_year | integer | Latest first registration year for Autos searches. Minimum accepted value is 1900. | – |
fuel_type | string enum | Vehicle fuel type: "", benzin, diesel, cng, lpg, hybrid, elektro, andere. | "" |
transmission | string enum | Vehicle transmission: "", automatic, manual. | "" |
vehicle_type | string enum | Vehicle body type: "", small_car, sedan, wagon, convertible, suv, van, coupe, other. | "" |
damaged | string enum | Vehicle damage status: "" any condition, damaged, or undamaged. | "" |
exterior_color | string enum | Vehicle exterior color: "", black, white, gray, silver, blue, red, green, brown, beige, yellow, orange, gold, violet, other. | "" |
car_features | array of string enums | Vehicle equipment filters: trailer_coupling, park_assistant, alloy_wheels, xenon_led_light, air_conditioning, navigation, radio_tuner, bluetooth, handsfree, sunroof, seat_heating, cruise_control, non_smoking, abs, full_service_history. | [] |
min_living_area | number | Minimum living area in square meters for Mietwohnungen searches. | – |
max_living_area | number | Maximum living area in square meters for Mietwohnungen searches. | – |
min_rooms | number | Minimum room count for Mietwohnungen searches. Decimal values can represent half-room layouts where supported. | – |
max_rooms | number | Maximum room count for Mietwohnungen searches. | – |
min_floor | integer | Minimum floor for Mietwohnungen searches. | – |
max_floor | integer | Maximum floor for Mietwohnungen searches. | – |
apartment_type | string enum | Apartment type: "", attic, ground_floor, apartment_floor, raised_ground_floor, loft, maisonette, penthouse, basement, terrace, other. | "" |
online_viewing | string enum | Online viewing status for Mietwohnungen searches: "", yes, no. | "" |
swap_offer | string enum | Swap-offer status for Mietwohnungen searches: "", yes, no. | "" |
home_garden_color | string enum | Haus & Garten color filter: "", other, beige, blue, brown, multicolor, burgundy, yellow, gold, gray, green, wood, khaki, purple, orange, pink, red, black, silver, transparent, white. | "" |
home_garden_material | string enum | Haus & Garten material filter: "", cotton, organic_cotton, bronze, oak, iron, flannel, glass, wood, ceramic, pine, rattan_wicker, fake_fur, plastic, lacquered, leather, linen, marble, solid_wood, metal, mixed_fabric, natural_fibres, pvc_synthetic, paper, cotton_percale, polyester, velvet, cotton_satin, formica, other, steel, stone, fabric, viscose, oilcloth, wool. | "" |
enrich_data | boolean | Enables more complete listing detail when available, including fuller descriptions, attributes, address details, media, price context, seller context, and shipping details. Leave disabled for faster standard result records. | false |
maximize_coverage | boolean | Enables broader coverage behavior for large search or category scopes when many matching listings are available. Use for monitoring or research jobs where recall is more important than speed. | false |
limit | integer | Maximum records to save per source URL or search term. Minimum is 1. Use a small value for validation and a larger value for scheduled exports. | –; Apify prefill 100 |
Category Values
Use "" for All categories. The category field also supports these Kleinanzeigen category IDs:
- Auto, Rad & Boot:
210Auto, Rad & Boot;216Autos;223Autoteile & Reifen;211Boote & Bootszubehör;217Fahrräder & Zubehör;305Motorräder & Motorroller;306Motorradteile & Zubehör;276Nutzfahrzeuge & Anhänger;280Reparaturen & Dienstleistungen;220Wohnwagen & -mobile;241Weiteres Auto, Rad & Boot. - Dienstleistungen:
297Dienstleistungen;288Altenpflege;289Auto, Rad & Boot;290Babysitter/-in & Kinderbetreuung;293Elektronik;291Haus & Garten;292Künstler/-in & Musiker/-in;294Reise & Event;295Tierbetreuung & Training;296Umzug & Transport;298Weitere Dienstleistungen. - Eintrittskarten & Tickets:
231Eintrittskarten & Tickets;286Bahn & ÖPNV;254Comedy & Kabarett;287Gutscheine;252Kinder;255Konzerte;257Sport;251Theater & Musical;256Weitere Eintrittskarten & Tickets. - Elektronik:
161Elektronik;172Audio & Hifi;226Dienstleistungen Elektronik;245Foto;173Handy & Telefon;176Haushaltsgeräte;279Konsolen;278Notebooks;228PCs;225PC-Zubehör & Software;285Tablets & Reader;175TV & Video;227Videospiele;405Wearables;406Wearables Zubehör;168Weitere Elektronik. - Familie, Kind & Baby:
17Familie, Kind & Baby;236Altenpflege;22Baby- & Kinderkleidung;19Baby- & Kinderschuhe;258Baby-Ausstattung;21Babyschalen & Kindersitze;237Babysitter/-in & Kinderbetreuung;25Kinderwagen & Buggys;20Kinderzimmermöbel;23Spielzeug;18Weiteres Familie, Kind & Baby. - Freizeit, Hobby & Nachbarschaft:
185Freizeit, Hobby & Nachbarschaft;232Esoterik & Spirituelles;248Essen & Trinken;187Freizeitaktivitäten;282Handarbeit, Basteln & Kunsthandwerk;240Kunst & Antiquitäten;191Künstler/-in & Musiker/-in;249Modellbau;233Reise & Eventservices;234Sammeln;230Sport & Camping;250Trödel;189Verloren & Gefunden;242Weiteres Freizeit, Hobby & Nachbarschaft. - Haus & Garten:
80Haus & Garten;91Badezimmer;93Büro;246Dekoration;239Dienstleistungen Haus & Garten;89Gartenzubehör & Pflanzen;90Heimtextilien;84Heimwerken;86Küche & Esszimmer;82Lampen & Licht;81Schlafzimmer;88Wohnzimmer;87Weiteres Haus & Garten. - Haustiere:
130Haustiere;138Fische;134Hunde;136Katzen;132Kleintiere;135Nutztiere;139Pferde;133Tierbetreuung & Training;283Vermisste Tiere;243Vögel;313Zubehör. - Immobilien:
195Immobilien;199Auf Zeit & WG;402Container;196Eigentumswohnungen;275Ferien- & Auslandsimmobilien;197Garagen & Stellplätze;277Gewerbeimmobilien;207Grundstücke & Gärten;208Häuser zum Kauf;205Häuser zur Miete;203Mietwohnungen;403Neubauprojekte;238Umzug & Transport;198Weitere Immobilien. - Jobs:
102Jobs;118Ausbildung;111Bau, Handwerk & Produktion;114Büroarbeit & Verwaltung;110Gastronomie & Tourismus;105Kundenservice & Call Center;107Mini- & Nebenjobs;125Praktika;123Sozialer Sektor & Pflege;247Transport, Logistik & Verkehr;117Vertrieb, Einkauf & Verkauf;109Weitere Jobs. - Mode & Beauty:
153Mode & Beauty;224Beauty & Gesundheit;154Damenbekleidung;159Damenschuhe;160Herrenbekleidung;158Herrenschuhe;156Taschen & Accessoires;157Uhren & Schmuck;155Weiteres Mode & Beauty. - Musik, Filme & Bücher:
73Musik, Filme & Bücher;76Bücher & Zeitschriften;281Büro & Schreibwaren;284Comics;77Fachbücher, Schule & Studium;79Film & DVD;78Musik & CDs;74Musikinstrumente;75Weitere Musik, Filme & Bücher. - Nachbarschaftshilfe:
400Nachbarschaftshilfe;401Nachbarschaftshilfe. - Unterricht & Kurse:
235Unterricht & Kurse;269Beauty & Gesundheit;260Computerkurse;265Esoterik & Spirituelles;263Kochen & Backen;264Kunst & Gestaltung;262Musik & Gesang;268Nachhilfe;261Sportkurse;271Sprachkurse;267Tanzkurse;266Weiterbildung;270Weitere Unterricht & Kurse. - Verschenken & Tauschen:
272Verschenken & Tauschen;273Tauschen;274Verleihen;192Verschenken.
Choosing Inputs
Use queries when you want the actor to discover matching public listings from one or more search phrases. Use startUrls when you already have a search page, category page, filtered result page, merchant profile, or direct listing URL that defines the exact source scope. Query-level fields such as location, category, offer_type, seller_type, price filters, condition filters, and category-specific refinements affect search terms; direct source URLs keep the scope already encoded in the URL. Narrower filters produce more targeted datasets, while broader filters improve discovery and can be better for market scans. Use one query, category, geography, price band, or source URL group per run when you need clean downstream comparisons. Start with a small limit, inspect the records, then increase the limit or schedule recurring runs after the output matches your use case.
Input Recipes
- Validation run: use one simple
queriesvalue such aslaptop, setlimitto a small number, and inspect the first dataset records before widening scope. - Targeted electronics collection: combine
queries,location,category,min_price,max_price,condition, and optional shipping fields to build a focused product dataset. - Direct URL monitoring: place known search, category, filtered result, merchant profile, or listing URLs in
startUrlsand repeat the same input on a schedule. - Vehicle analysis: use
categoryfor Autos, then applycar_make,car_model, mileage, registration year, fuel type, transmission, vehicle type, damage status, color, or feature filters. - Apartment research: use the Mietwohnungen category with room, floor, living-area, apartment-type, online-viewing, and swap-offer fields for a specific housing profile.
- Detail enrichment: use direct listing URLs or a narrow query with
enrich_dataenabled when full descriptions, seller context, image links, and listing attributes matter.
Example Inputs
Example: query-driven electronics validation
{"queries": ["laptop"],"location": "Berlin","category": "278","min_price": 150,"max_price": 1200,"condition": ["new", "very_good"],"limit": 25}
Example: known listing or merchant source
{"startUrls": ["https://www.kleinanzeigen.de/s-laptop/k0","https://www.kleinanzeigen.de/pro/sample-merchant-profile"],"enrich_data": true,"limit": 50}
Example: vehicle segment monitoring
{"queries": ["golf"],"category": "216","car_make": "volkswagen","car_model": "Golf","max_mileage": 90000,"fuel_type": "benzin","transmission": "automatic","limit": 100}
Output
Output Destination
The actor writes results to an Apify dataset as JSON records. The dataset is designed for direct consumption by analytics tools, ETL pipelines, AI agents, and downstream APIs with minimal post-processing. The example below documents the product listing record shape represented by the provided output contract.
Record Envelope And Stable Identifiers
Each record is saved as a product record with a stable record_id when a Kleinanzeigen listing ID is available. The recommended idempotency key is record_id; source_context.canonical_url is a useful secondary key when URL-based matching is required. For deduplication and upserts, prefer record_id and keep source_context.source_url or source_context.canonical_url as audit links. Stable identifiers make records easier to merge, deduplicate, sync, and compare across repeated runs.
Example: Product Listing Record
{"record_type": "product","record_id": "3412293903","source_context": {"source_id": "kleinanzeigen_product_scraper","source": "Kleinanzeigen","source_domain": "kleinanzeigen.de","source_url": "https://www.kleinanzeigen.de/s-anzeige/sample-family-home-with-garden/3412293903-208-464","canonical_url": "https://www.kleinanzeigen.de/s-anzeige/sample-family-home-with-garden/3412293903-208-464","seed_url": "https://www.kleinanzeigen.de/s-anzeige/sample-family-home-with-garden/3412293903-208-464","seed_type": "search_result","search_query": "haus kaufen","seed_value": "haus kaufen","position": 3,"language": "de","country": "DE"},"entity": {"title": "Sample family home with garden in Bad Schwartau","name": "Sample family home with garden in Bad Schwartau","description": "Sample listing description for a family home with garden, parking, basement, and energy details.\n# Ausstattung\n- Insgesamt ca. 150 m²\n- Aufgeteilt auf 7 Zimmer\n- Baujahr Haupthaus ca. 1953\n- Baujahr Anbau ca. 1993\n- Großzügiger Wohn-Essbereich\n- Wohnküche\n- 4 Schlafzimmer möglich\n- Arbeits-/ Gästezimmer\n- Gäste-Duschbad\n- Wannenbad\n# Weitere Angaben\n- Verfügbar ab: nach Vereinbarung\n- Grundstücksfläche: ca. 951 m²\n# Energie\n- Energieausweis: Energiebedarfsausweis\n- Wesentliche Energieträger: GAS\n- Endenergiebedarf: 270.3 kWh/(m²*a)\n- Energieeffizienzklasse: H\nAnbieter-Objekt-ID: SAMPLE-219899","url": "https://www.kleinanzeigen.de/s-anzeige/sample-family-home-with-garden/3412293903-208-464","external_ids": {"listing_id": "3412293903"}},"location": {"address": "23611 Kreis Ostholstein - Bad Schwartau","city": "23611 Kreis Ostholstein - Bad Schwartau","postal_code": "23611","latitude": 53.9263967,"longitude": 10.6777027,"display_location": "23611 Kreis Ostholstein - Bad Schwartau","locality": "23611 Kreis Ostholstein - Bad Schwartau"},"pricing": {"price": 320000.0,"price_text": "320.000 €","currency": "EUR","price_type": "FIXED","negotiable": false,"free": false},"media": {"main_image_url": "https://img.kleinanzeigen.de/api/v1/prod-ads/images/00/sample-main-image?rule=$_59.AUTO","primary_image_url": "https://img.kleinanzeigen.de/api/v1/prod-ads/images/00/sample-main-image?rule=$_59.AUTO","image_urls": ["https://img.kleinanzeigen.de/api/v1/prod-ads/images/00/sample-main-image?rule=$_59.AUTO","https://img.kleinanzeigen.de/api/v1/prod-ads/images/70/sample-image-2?rule=$_59.JPG","https://img.kleinanzeigen.de/api/v1/prod-ads/images/e4/sample-image-3?rule=$_59.JPG"]},"product": {"product_id": "3412293903","listing_id": "3412293903","description": "Sample listing description for a family home with garden, parking, basement, and energy details.\n# Ausstattung\n- Insgesamt ca. 150 m²\n- Aufgeteilt auf 7 Zimmer\n- Baujahr Haupthaus ca. 1953\n- Baujahr Anbau ca. 1993\n- Großzügiger Wohn-Essbereich\n- Wohnküche\n- 4 Schlafzimmer möglich\n- Arbeits-/ Gästezimmer\n- Gäste-Duschbad\n- Wannenbad\n# Weitere Angaben\n- Verfügbar ab: nach Vereinbarung\n- Grundstücksfläche: ca. 951 m²\n# Energie\n- Energieausweis: Energiebedarfsausweis\n- Wesentliche Energieträger: GAS\n- Endenergiebedarf: 270.3 kWh/(m²*a)\n- Energieeffizienzklasse: H\nAnbieter-Objekt-ID: SAMPLE-219899","category": "Häuser zum Kauf","category_path": ["Immobilien","Haus_kaufen"],"url": "https://www.kleinanzeigen.de/s-anzeige/sample-family-home-with-garden/3412293903-208-464","attributes": {"Wohnfläche": "150 m²","Zimmer": "7","Schlafzimmer": "4","Badezimmer": "2","Grundstücksfläche": "951 m²","Haustyp": "Einfamilienhaus freistehend","Etagen": "2","Baujahr": "1953","Provision": "Mit Provision","Ausstattung": ["Einbauküche","Keller","Garage/Stellplatz"]}},"offer": {"offer_id": "3412293903","listed_at_text": "17.06.2026","ad_type": "OFFERED","price_type": "FIXED"},"seller": {"seller_name": "Sample Immobilien GmbH - Jana Beispiel","seller_type": "Trade","name": "Sample Immobilien GmbH - Jana Beispiel","business_name": "Sample Immobilien GmbH - Lübeck","business_profile_url": "https://www.kleinanzeigen.de/pro/sample-immobilien-luebeck","active_since": "19.07.2019","listing_count": 118,"phone": "040-0000000"},"relationships": {"seller": {"name": "Sample Immobilien GmbH - Jana Beispiel","seller_type": "Trade"},"merchant": {"name": "Sample Immobilien GmbH - Lübeck","url": "https://www.kleinanzeigen.de/pro/sample-immobilien-luebeck"}},"attributes": {"categories": ["Immobilien","Haus_kaufen"],"listing_attributes": {"Wohnfläche": "150 m²","Zimmer": "7","Schlafzimmer": "4","Badezimmer": "2","Grundstücksfläche": "951 m²","Haustyp": "Einfamilienhaus freistehend","Etagen": "2","Baujahr": "1953","Provision": "Mit Provision","Ausstattung": ["Einbauküche","Keller","Garage/Stellplatz"]},"description_sections": {"Ausstattung": {"items": ["Insgesamt ca. 150 m²","Aufgeteilt auf 7 Zimmer","Baujahr Haupthaus ca. 1953","Baujahr Anbau ca. 1993","Großzügiger Wohn-Essbereich","Wohnküche","4 Schlafzimmer möglich","Arbeits-/ Gästezimmer","Gäste-Duschbad","Wannenbad"],"details": {"Erbpacht": "199,- € p.M"}},"Weitere Angaben": {"Verfügbar ab": "nach Vereinbarung","Provisionshinweis": "Sample commission notice for public documentation.","Grundstücksfläche": "ca. 951 m²"},"Energie": {"Energieausweis": "Energiebedarfsausweis","Wesentliche Energieträger": "Gas","Endenergiebedarf": "270.3 kWh/(m²*a)","Energieeffizienzklasse": "H","Gültig bis": "05-2036","Heizungsart": "Etagenheizung","Anbieter-Objekt-ID": "SAMPLE-219899"}}}}
Field Reference
Record Envelope
- record_type (string, required): normalized record family. Product and classified listings are saved as
product. - record_id (string, required when available): stable Kleinanzeigen listing identifier and recommended upsert key.
Source Context
- source_context (object, required): provenance and input context for the record.
- source_context.source_id (string, optional): source label for the actor output.
- source_context.source (string, optional): human-readable source name.
- source_context.source_domain (string, optional): public source domain.
- source_context.source_url (string, optional): public listing URL associated with the record.
- source_context.canonical_url (string, optional): normalized public listing URL for matching or audit use.
- source_context.seed_url (string, optional): input URL that led to the record.
- source_context.seed_type (string, optional): source input shape that produced the record.
- source_context.search_query (string, optional): query that produced the listing when query discovery is used.
- source_context.seed_value (string, optional): compact value for the source input, usually a query or URL.
- source_context.position (integer, optional): one-based result position within the collected source scope.
- source_context.language (string, optional): normalized language code.
- source_context.country (string, optional): normalized country code.
Entity
- entity (object, required): primary listing identity.
- entity.title (string, optional): listing title.
- entity.name (string, optional): display name, usually matching the title.
- entity.description (string, optional): listing description when available.
- entity.url (string, optional): public listing URL.
- entity.external_ids (object, optional): source identifiers for the listing.
- entity.external_ids.listing_id (string, optional): Kleinanzeigen listing ID.
Location
- location (object, optional): displayed location and geographic details.
- location.address (string, optional): displayed address or location text.
- location.city (string, optional): city, district, or locality text.
- location.postal_code (string, optional): parsed postal code when available.
- location.latitude (number, optional): latitude coordinate when available.
- location.longitude (number, optional): longitude coordinate when available.
- location.display_location (string, optional): best display-ready location label.
- location.locality (string, optional): locality or postal locality text.
Pricing
- pricing (object, optional): price and price classification.
- pricing.price (number, optional): parsed numeric listing price.
- pricing.price_text (string, optional): source display price text.
- pricing.currency (string, optional): currency code, usually
EUR. - pricing.price_type (string, optional): source price classification, such as
FIXED. - pricing.negotiable (boolean, optional): whether negotiation is indicated.
- pricing.free (boolean, optional): whether the listing appears to be free.
Media
- media (object, optional): image URLs associated with the listing.
- media.main_image_url (string, optional): primary display image URL.
- media.primary_image_url (string, optional): primary source image URL.
- media.image_urls (array of strings, optional): image URLs in source order.
Product
- product (object, optional): product, listing, and category fields for catalog-style analysis.
- product.product_id (string, optional): product-facing copy of the listing ID.
- product.listing_id (string, optional): Kleinanzeigen listing ID in the product group.
- product.description (string, optional): listing description repeated for product-oriented exports.
- product.category (string, optional): most specific category label.
- product.category_path (array of strings, optional): category hierarchy from broad to specific.
- product.url (string, optional): public listing URL repeated in the product group.
- product.attributes (object, optional): category-specific attributes such as area, rooms, construction year, condition, equipment, or other listing facts.
Offer
- offer (object, optional): offer-level fields.
- offer.offer_id (string, optional): offer-facing copy of the listing ID.
- offer.listed_at_text (string, optional): source date or freshness text.
- offer.ad_type (string, optional): offer classification such as
OFFERED. - offer.price_type (string, optional): price classification repeated at offer level.
Seller And Relationships
- seller (object, optional): seller or merchant context visible on the listing.
- seller.seller_name (string, optional): seller display name.
- seller.seller_type (string, optional): seller type, such as private or trade.
- seller.name (string, optional): seller display name repeated for generic consumers.
- seller.business_name (string, optional): business or merchant name.
- seller.business_profile_url (string, optional): public business profile URL.
- seller.active_since (string, optional): source display text for account activity start.
- seller.listing_count (integer, optional): listing count shown publicly.
- seller.phone (string, optional): public phone text when exposed by the listing.
- relationships (object, optional): compact related entities for seller and merchant joins.
- relationships.seller.name (string, optional): seller name in relationship form.
- relationships.seller.seller_type (string, optional): seller type in relationship form.
- relationships.merchant.name (string, optional): merchant name in relationship form.
- relationships.merchant.url (string, optional): public merchant profile URL.
Attributes
- attributes (object, optional): additional listing facts, categories, and structured description sections.
- attributes.categories (array of strings, optional): category path repeated for attribute-oriented systems.
- attributes.listing_attributes (object, optional): category-specific listing attributes such as area, room count, equipment, or condition.
- attributes.description_sections (object, optional): structured sections extracted from long descriptions when available.
- attributes.description_sections.Ausstattung.items (array of strings, optional): equipment or feature bullets from the example record.
- attributes.description_sections.Ausstattung.details (object, optional): key-value details from the equipment section.
- attributes.description_sections.Weitere Angaben (object, optional): additional key-value details from the listing description.
- attributes.description_sections.Energie (object, optional): energy-related key-value details for real estate records when available.
Data Model Notes
- Identity fields: use
record_idas the primary matching, deduplication, and upsert key when present. - Source/provenance fields: use
source_context.source_url,source_context.canonical_url,source_context.search_query, andsource_context.positionto trace records back to the public source and input scope. - Business attributes:
entity,pricing,location,product,offer,seller, andattributescarry the main review and analysis value. - Nested objects: related fields are grouped together so JSON-first tools can preserve structure and analysts can flatten deliberately when needed.
- Optional fields: public listings vary by category, region, seller type, and listing detail; null-check optional fields in dashboards and pipelines.
- Repeated runs: compare records across runs with
record_idplus Apify run metadata, input segment, and export timestamp stored outside or alongside the record.
Data Quality, Guarantees, And Handling
- Structured records: results are normalized into predictable JSON objects for downstream use.
- Best-effort extraction: fields may vary by region, availability, account visibility, UI experiments, or source-side changes.
- Optional fields: null-check in downstream code, spreadsheets, dashboards, and AI workflows.
- Deduplication: use
record_idas the strongest stable key, withsource_context.canonical_urlas a secondary audit key. - Freshness: results reflect the publicly available data at run time.
- Repeated runs: use the recommended idempotency key when syncing data into warehouses, CRMs, search indexes, vector stores, or monitoring systems.
- Schema awareness: downstream systems should rely on documented fields and handle newly missing optional fields gracefully.
Tips For Best Results
- Start with a small
limitto validate the output shape before scaling up. - Use one geography, category, keyword, or source segment per run when you need cleaner comparison.
- Leave optional filters empty when the goal is broad discovery.
- Add filters gradually to understand how each field changes coverage.
- Use direct
startUrlsfor repeatable monitoring of known result pages, merchant profiles, or listing URLs. - Enable
enrich_datawhen full descriptions, attributes, seller context, or image sets are important. - Schedule recurring runs for monitoring workflows instead of relying on manual one-off exports.
- Keep a saved copy of the input configuration used for each recurring workflow.
How to Run on Apify
- Open the Actor in Apify Console.
- Configure the available input fields for the target scope.
- Set
limitto control the maximum number of outputs per source. - Click Start and wait for the run to finish.
- Open the dataset and inspect the first records.
- Download results in JSON, CSV, Excel, or another supported format.
Agentic And API-First Usage
This actor can be used as a structured data acquisition step inside larger automated workflows. It is well suited for systems that need a bounded Kleinanzeigen dataset, predictable JSON fields, and stable identifiers before running analysis, enrichment, alerting, or human review.
Agent workflow pattern:
- Generate or select a scoped input from the supported schema.
- Run the actor manually, on a schedule, or through Apify platform automation.
- Wait for completion and read the dataset records.
- Validate records against the Field Reference.
- Upsert records into the downstream system using
record_id. - Trigger analysis, enrichment, alerts, or human review.
Practical notes for agentic use:
- Keep prompts and automations grounded in the documented input parameters.
- Start with small validation runs before allowing broad automated collection.
- Feed the Field Reference and a small output sample to downstream AI steps.
- Treat optional fields as nullable instead of asking agents to infer missing values.
- Store run ID, input configuration, and dataset export metadata outside the record when building audit trails.
Scheduling & Automation
Scheduling
Automated Data Collection
Use Apify schedules to run the actor repeatedly and keep recurring datasets current. Scheduled runs are useful for pricing dashboards, listing availability checks, merchant monitoring, and category trend reporting.
- Navigate to Schedules in Apify Console.
- Create a new schedule, such as daily, weekly, or custom cron.
- Configure input parameters.
- Enable notifications for run completion.
- Add webhooks for automated processing.
Integration Options
- BI dashboards: monitor pricing, availability, category movement, seller mix, and geographic coverage over time.
- Warehouses and lakehouses: store normalized listing records for historical analysis, joins, and reporting.
- Scheduled exports: deliver recurring CSV, Excel, or JSON files to analysts and operations teams.
- Webhooks: trigger ingestion, alerting, validation, or review workflows after each completed run.
- CRM enrichment: sync public seller, merchant, location, and listing attributes into account or lead records where appropriate.
- Search and vector indexes: make listing titles, descriptions, categories, and attributes searchable for research or agent context.
- Google Sheets, Airtable, Zapier, or Make: route smaller datasets into lightweight review and no-code workflow tools.
Export Formats And Downstream Use
- JSON: for APIs, applications, AI agents, and data pipelines that should preserve nested objects.
- CSV or Excel: for spreadsheet workflows, stakeholder review, QA, and lightweight analysis.
- API access: for automated ingestion into owned systems.
- BI and warehouses: for reporting, dashboards, historical analysis, and monitoring.
- Search or vector indexes: for discovery, semantic search, retrieval workflows, or agent context built from listing text and attributes.
Downstream Pipeline Guide
- Idempotency: use
record_idfor upserts, and keepsource_context.canonical_urlas a secondary audit key. - Null handling: treat optional fields as nullable because category, seller, media, location, and attribute coverage can vary.
- Type handling: preserve numbers, booleans, arrays, and nested objects when exporting to JSON-first systems.
- Flattening: if exporting to CSV or Excel, flatten nested objects deliberately and keep the original JSON export for full fidelity.
- Partitioning: store run date, input segment,
source_context.search_query, geography, category, or workflow name outside or alongside records for easier analysis. - Change detection: compare repeated runs by
record_idand selected business fields such aspricing.price,pricing.price_text,offer.listed_at_text, andseller.listing_count. - Quality checks: monitor record count, duplicate rate, missing
record_id, and fill rates for important optional groups such aspricing,location,seller, andattributes. - Human review: route records with missing critical fields, unusual values, or changed price/status signals into a review queue when needed.
- Retention: decide how long to keep raw exports versus normalized warehouse tables based on your use case.
Performance
- Small runs (< 1,000 outputs): ~3-5 minutes.
- Medium runs (1,000-5,000 outputs): ~5-15 minutes.
- Large runs (5,000+ outputs): ~15-30 minutes.
Execution time varies based on filters, result volume, target availability, and how much information is returned per record. Highly filtered runs can finish faster, while broad discovery or detail-rich records may take longer.
Limitations
- Availability depends on what Kleinanzeigen publicly exposes at run time.
- Some optional fields may be missing on sparse records, search-result records, certain categories, or listings with limited public detail.
- Very broad searches may take longer or require higher limits.
- Target-side changes can affect field availability, naming, or record completeness.
- Regional, account, visibility, or availability differences may change visible results.
- The actor provides structured public data, not business advice, legal advice, valuation advice, or guaranteed completeness.
- Direct URLs, categories, filters, and limits should be reviewed when workflows require high precision.
Troubleshooting
- No results returned: check filters, location or category spelling, direct URLs, and whether Kleinanzeigen has matching public records.
- Fewer results than expected: broaden filters, raise
limit, or verify that the target scope contains enough matching records. - Some fields are empty: optional fields depend on what each listing publicly provides.
- Duplicate-looking records: compare
record_idand decide whether records represent variants, locations, reposts, or updates. - Run takes longer than expected: reduce scope, lower
limitfor validation, or split broad collection into smaller segments. - Output changed: compare the current output with the Field Reference and report a small sample if support is needed.
- Downstream import failed: check JSON validity, nullable fields, nested objects, and whether your destination expects flattened columns.
FAQ
What data does this actor collect?
It collects structured public Kleinanzeigen listing records, including listing identity, price, location, category, media, offer details, seller context, relationships, attributes, and source context when available.
Can I filter by location, category, price, seller type, shipping, or keyword?
Yes. Use queries with fields such as location, category, min_price, max_price, seller_type, shipping, shipping_carrier, condition, and category-specific filters. Direct URLs keep the scope already encoded in the URL.
Why did I receive fewer results than my limit?
The target scope may contain fewer matching public listings than requested, filters may be too narrow, or some records may not expose enough usable public detail.
How should I choose a limit for my first run?
Start with a small limit such as 10-50 records, inspect the dataset, then increase the limit for recurring exports or broader coverage.
Can I schedule recurring runs?
Yes. Use Apify schedules to run the same input daily, weekly, or on a custom cadence.
How do I avoid duplicates across runs?
Use record_id as the main unique key. Keep source_context.canonical_url or source_context.source_url as an audit reference.
What is the best field to use as a unique key?
Use record_id when present. For URL-based reconciliation, use source_context.canonical_url as a secondary key.
Can I use the output with AI agents or automated workflows?
Yes. The dataset is JSON-based and includes stable identifiers, source context, and nested field groups that are suitable for agentic review, routing, enrichment, and monitoring workflows.
Can I export the data to CSV, Excel, or JSON?
Yes. Apify datasets can be exported in JSON, CSV, Excel, and other supported formats. JSON preserves the full nested record structure.
Does this actor collect private data?
The actor is intended for publicly available Kleinanzeigen information. Users are responsible for using exported data lawfully and responsibly.
What should I include when reporting an issue?
Include the redacted input, run ID, expected behavior, actual behavior, a small output sample if relevant, and the downstream export or destination if the issue is pipeline-related.
Compliance & Ethics
Responsible Data Collection
This actor collects publicly available Kleinanzeigen listing information for legitimate business purposes. Users are responsible for ensuring that their use of collected records complies with applicable laws, regulations, platform terms, and company policies.
Legitimate use cases include:
- Marketplace research and market analysis.
- Inventory, pricing, and availability monitoring.
- Public listing enrichment for operational review, reporting, and analytics.
This section is informational and not legal advice.
Best Practices
- Use collected data in accordance with applicable laws, regulations, and the target site's terms.
- Respect individual privacy and personal information.
- Use data responsibly and avoid disruptive or excessive collection.
- Do not use this actor for spamming, harassment, discrimination, or other harmful purposes.
- Follow relevant data protection requirements where applicable, including GDPR, CCPA, or sector-specific rules.
- Review your own retention, access control, and data-sharing policies before operationalizing the dataset.
Support
For help, use the actor page or Issues. Include the redacted input used, run ID, expected versus actual behavior, a small output sample when useful, and the downstream destination or export format if the issue is related to a pipeline or import workflow.