Facebook Marketplace Scraper
Pricing
from $1.00 / 1,000 results
Facebook Marketplace Scraper
Extract data from Facebook Marketplace listings. Scrape items for sale, apartments, categories, search results with prices, locations, seller info, and more. Export data in JSON, CSV, or Excel.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
6
Bookmarked
246
Total users
18
Monthly active users
11 days ago
Last modified
Categories
Share
Extract public Facebook Marketplace listings by search URL, category, location, keyword, or direct item URL. The actor returns normalized listing data for products, furniture, vehicles, apartments, collectibles, and other Marketplace categories, including title, price, location, photos, seller availability, delivery information, listing status, and source attribution.
What this actor does
- Scrapes one or many Marketplace URLs in a single run.
- Builds a Marketplace search URL from
searchQueryandlocationwhen URL input is not supplied. - Supports category, price, condition, delivery, date, radius, and sort filters.
- Streams fast-mode results to the dataset while the run is still collecting listings.
- Optionally visits listing pages for deeper fields such as descriptions, attributes, creation time, and additional media.
- Adds the exact input source to every output row so results from multiple searches can be attributed.
- Deduplicates listings across inputs by default and keeps the first source attribution.
- Uses a US Apify residential proxy by default for public Marketplace access.
Quick start
The daily prefill is intentionally small and production-safe for a smoke test:
{"startUrls": [{ "url": "https://www.facebook.com/marketplace/nyc/search/?query=laptop" }],"maxItems": 5,"maxItemsPerUrl": 5,"scrapeMode": "fast","includeListingDetails": false,"includeAllPhotos": false,"deduplicateAcrossInputs": true,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
For a larger collection, increase maxItems and maxItemsPerUrl. These values are ceilings, not promises that Facebook has that many matching listings available.
Input
Use startUrls, or use searchQuery together with location when startUrls is omitted. Additional search and output controls are optional.
| Field | Type | Default | Purpose |
|---|---|---|---|
startUrls | array | daily prefill URL | Marketplace search, category, location, or direct item URLs |
searchQuery | string | none | Keyword or phrase such as laptop, used bicycle, or sofa |
location | string | none | Marketplace slug or city/state, such as nyc or Austin, TX |
latitude / longitude | number | none | Structured-search center coordinates |
radiusKm | integer | none | Structured-search radius from 1 to 500 km |
categoryId | string | none | Facebook Marketplace category ID |
sortBy | enum | relevance | relevance, newest, price_asc, or price_desc |
minPrice / maxPrice | number | none | Verified price range |
condition | enum | any | any, new, used_like_new, used_good, or used_fair |
deliveryMethod | enum | all | all, shipping, or local |
daysSinceListed | integer | none | Include listings created within this many days when creation time is available |
maxItems | integer | 50 | Global output limit across all sources, up to 10,000 |
maxItemsPerUrl | integer | 50 | Output limit for each source URL, up to 10,000 |
resultsLimit | integer | none | Legacy per-source limit for existing integrations; maxItemsPerUrl takes precedence |
scrapeMode | enum | fast | fast, deep, or auto |
includeListingDetails | boolean | false | Compatibility alias that enables deep detail enrichment |
includeAllPhotos | boolean | false | Retain all photo data exposed during detail enrichment |
deduplicateAcrossInputs | boolean | true | Emit a listing ID once across all input sources |
proxyConfiguration | object | US residential Apify Proxy | Apify proxy settings; Apify Proxy is forced to the residential group |
Supported URL types
- Location feed:
https://www.facebook.com/marketplace/sanfrancisco/ - Category feed:
https://www.facebook.com/marketplace/sanfrancisco/instruments - Search feed:
https://www.facebook.com/marketplace/sanfrancisco/search/?query=crane - Direct item:
https://www.facebook.com/marketplace/item/772594759027016/
URLs can be supplied as a list so multiple cities, categories, or keyword searches can be collected in one run.
Structured search example
{"searchQuery": "laptop","location": "New York, NY","radiusKm": 25,"sortBy": "newest","condition": "used_good","minPrice": 50,"maxPrice": 500,"maxItems": 100}
Output
The default dataset contains one JSON object per listing. A row is never an array of listings. The actor preserves useful Facebook fields where available and adds normalized fields for consistent downstream processing.
Normalized fields
| Field | Description |
|---|---|
id | Facebook Marketplace listing ID |
title | Normalized listing title |
price | Typed price object when a numeric price is available |
city / state | Normalized location values when exposed |
locationText | Human-readable location text |
primaryPhotoUrl | URL of the primary listing photo |
sourceUrl | Exact input URL that produced the row |
sourceType | search, category, location, or item |
inputIndex | Zero-based position of the input source |
searchQuery | Query associated with the source, when known |
locationQueried | Location associated with the source, when known |
extractionSource | search_page or detail_page |
qualityStatus | complete or partial based on observed fields |
missingFields | Fields unavailable from the current page/session |
sellerDataAvailability | Whether seller data was exposed by Facebook |
Facebook-compatible fields
Common source fields include facebookUrl, listingUrl, marketplace_listing_title, listing_price, strikethrough_price, location, primary_listing_photo, listing_video, marketplace_listing_category_id, marketplace_listing_seller, delivery_types, is_hidden, is_live, is_pending, is_sold, redacted_description, creation_time, item_location, attribute_data, commerce_badges_info, cross_post_info, share_uri, shipping_offered, and search_pivots.
Fields are conditional. Descriptions, seller identity, exact coordinates, vehicle attributes, status flags, photos, and delivery details are returned only when Facebook exposes them for that listing and session. The actor does not invent missing values.
Fast and deep modes
fast extracts search-page data, writes rows incrementally, and is the recommended mode for broad searches and hundreds of results. deep visits listing pages for additional detail fields and writes enriched rows after deduplication. auto follows the detail compatibility settings.
Use includeListingDetails: true when an existing integration expects deep enrichment. includeAllPhotos: true also enables deep mode. Deep mode costs more and can take longer because it makes bounded detail-page requests for individual listings.
Reliability and data quality
- Every row contains source attribution for multi-query analysis.
- Duplicate listing IDs are merged and suppressed across inputs by default.
- The actor distinguishes valid empty searches from login pages, consent pages, checkpoints, challenges, network failures, and schema failures.
- A no-result run is not silently treated as a valid empty search when access was not verified.
- Search filters are applied only against values that can be verified from the extracted listing.
- CDN media URLs are returned as observed and may expire according to Facebook's own policy.
- Facebook may change page markup, restrict access, require a session, or vary results by IP and location. Public-page access is supported, but no scraper can guarantee a result count when the source has no accessible matches.
- Residential proxies are recommended for production volume. When Apify Proxy is selected, the actor uses the residential group and US proxy country to keep the default behavior predictable.
Daily smoke test and production testing
The .actor/input_schema.json prefill is the daily smoke test configuration: one known NYC laptop search, five global and per-source rows, fast mode, deduplication enabled, and US residential Apify Proxy. It is designed to verify access, parsing, incremental output, provenance, and schema shape without spending production-scale credits.
For a release or deployment check, confirm that the run succeeds, the dataset contains rows when the source is accessible, each row has id, title or the source title, sourceUrl, sourceType, and qualityStatus, and the dataset receives rows before the run finishes in fast mode. Use a larger maxItems only after the smoke test passes.
Common use cases
- Monitor product prices and availability across cities.
- Find furniture, electronics, vehicles, apartments, and collectibles by keyword.
- Compare Marketplace demand by city, state, category, or search query.
- Build lead, inventory, and market-research datasets with per-query attribution.
- Export structured JSON or CSV from the Apify dataset for analytics and automation.
FAQ
Does Facebook Marketplace have a public data API?
Facebook does not provide a general public API for Marketplace search results. This actor reads data exposed by accessible Marketplace pages.
Why did a run return fewer items than maxItems?
maxItems is an upper limit. The source may expose fewer matching listings, hide records from the current session, or restrict access. A verified empty result is reported as an empty valid search; access failures are classified separately.
Should I enable listing details?
Use fast mode for volume and speed. Enable includeListingDetails or includeAllPhotos when descriptions, attributes, creation times, or additional media are more important than runtime and cost.
Can I identify which query produced each listing?
Yes. sourceUrl, sourceType, inputIndex, searchQuery, and locationQueried are included whenever the source supplies that information.
Is authentication required?
The actor is designed for accessible public Marketplace pages, but Facebook can require a logged-in session, consent, or an anti-abuse challenge depending on traffic, region, and account state. The actor reports those access states instead of presenting them as valid empty data.
What proxy should I use?
Use the default US residential Apify Proxy configuration for US Marketplace searches. Custom proxy settings can be supplied for an appropriate deployment, but datacenter traffic is more likely to encounter restrictions.
Is scraping Facebook Marketplace allowed?
Use only data you are authorized to access and comply with applicable laws, Facebook terms, privacy requirements, and the rules of your target use case. This actor does not provide access to private information.