Facebook Marketplace Scraper: Listings, Prices, Sellers
Pricing
from $2.34 / 1,000 listings
Facebook Marketplace Scraper: Listings, Prices, Sellers
Scrape Facebook Marketplace by keyword and city or coordinates, or by search, category and listing links: title, price, currency, location, seller, listed time, condition, category, photos and description. No login.
Pricing
from $2.34 / 1,000 listings
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
From The Mine Works, makers of Threads Scraper and B2B Leads Finder, with over 245,000 runs across 280+ public actors.
Updated 27 Oct 2026: first release. Keyword and city search, coordinates, search, category and listing links, Facebook's own filters, and the details of every listing (description, condition, all photos, coordinates, vehicle fields) in one flat row. Bookmark this Actor on its Store page so it is one click away next time.
Why choose this actor?
- The whole listing in one row. Title, price as a number and as shown, currency code, condition, category, the full description, every photo, the city and the exact coordinates with the distance from your search point, the seller's name, rating and join date, and when it was listed. Cars, trucks and boats also get make, model, year, mileage, transmission, fuel and title status. In our test runs the seller name was filled on 592 of 600 rows and the description on 585.
- Built for pipelines. One listing link or id in, one row out, for a Clay table, an n8n flow or an AI agent. Or a list of keywords around a city, a pasted search or category link with its filters, and up to 5,000 rows per search. Same price per listing with details on or off.
- No Facebook account. No login, no cookies of yours, no browser and no CAPTCHA solving. Removed listings, links that are not Marketplace links and duplicates get a free
errorrow with the reason and are never charged.
Part of The Mine Works E-commerce and marketplaces family: Ozon.ru Scraper, ⭐ Amazon Reviews Scraper, Amazon Product Scraper, Etsy Listings Scraper, AliExpress Scraper, Kleinanzeigen.de Scraper.
Guide and FAQs: Facebook Marketplace Scraper on themineworks.com.
Try it in one minute
Paste this into the JSON tab of the input page. It returns 30 guitars for sale around New York with their details and photos. It took 17 seconds in our test.
{"searchQueries": ["guitar"],"location": "New York, New York","maxListingsPerSearch": 30}
Put several keywords on separate lines to run several searches at once, or paste Marketplace links into startUrls. A listing that two of your searches find is delivered once.
Apify's free plan includes $5 of credit every month, which covers about 890 listings at this actor's price.
Copy to your AI assistant
themineworks/facebook-marketplace-scraper on Apify. Reads Facebook Marketplace as a logged out visitor and returns one flat row per listing: listing_id, listing_url, title, price, price_formatted, currency, condition, condition_label, category, description, location_text, location_city, location_state, latitude, longitude, distance_km, seller_name, seller_id, seller_rating, seller_joined_at, listed_at, status, primary_photo_url, photos, delivery_types, attributes, vehicle_make, vehicle_model, vehicle_year, vehicle_mileage, vehicle_transmission and the search that found it. Call ApifyClient("TOKEN").actor("themineworks/facebook-marketplace-scraper").call(run_input={"searchQueries": ["iphone 15"], "location": "Austin, Texas", "maxListingsPerSearch": 100}), then client.dataset(run["defaultDatasetId"]).list_items().items. Give searchQueries (keywords) with location (a city such as "Austin, Texas") or latitude and longitude, and or startUrls (Marketplace search links, category links such as https://www.facebook.com/marketplace/nyc/vehicles/, listing links https://www.facebook.com/marketplace/item/<id>/ or bare listing ids). Optional: maxListingsPerSearch (default 50, up to 5000), includeDetails (default true: description, condition, all photos, coordinates, vehicle fields), minPrice, maxPrice, sortBy (best_match, newest, price_low_to_high, price_high_to_low, distance_nearest, vehicle_year_newest, vehicle_mileage_lowest), daysSinceListed ("1", "7", "30"), itemCondition (new, used_like_new, used_good, used_fair), deliveryMethod (all, local_pick_up, shipping), radiusKm. Skip rows with a _type field (summary, info, error: never charged). Facebook shows a logged out visitor about 1,700 to 2,200 listings per search, then ends the list. Full spec: GET https://api.apify.com/v2/acts/themineworks~facebook-marketplace-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
Key features
- Search by keyword and place. Write the place the way you would say it ("Austin, Texas", "London, United Kingdom", "Mumbai"), use a Marketplace city slug such as
nycorla, or givelatitudeandlongitude. The city is turned into coordinates with Facebook's own place lookup, so it matches what Marketplace means by that city. - Paste links from your browser. A search link keeps its filters (
minPrice,maxPrice,sortBy,daysSinceListed,itemCondition,deliveryMethod). A category link such ashttps://www.facebook.com/marketplace/nyc/vehicles/reads that category feed. A listing link or a bare listing id returns that one listing. - Facebook's own filters. Price range, newest first or price order, listed in the last 24 hours, 7 or 30 days, condition, local pickup or shipping. They are applied by Facebook before the results come back, so you pay only for listings that match.
- Details of every listing. With
includeDetailson (the default) each listing's description, condition, category name, all photos, coordinates, postal code, currency, seller rating and join date, and vehicle fields are read too. Off, rows come from the search results only (title, price, city, seller name, listed time, one photo), which is faster. Same price either way. - Distance you can filter on. Facebook's logged out search treats the radius as a hint and returns listings around the place, nearest areas first. With details on, every row has
distance_kmfrom your search point, so you can keep exactly the ones within your range. - Stops cleanly. A refused request is retried on a new connection; four answers in a row with nothing new end a search; six inputs in a row that cannot be read end the run; the run stops before its time limit and keeps every row. The summary row says why each search ended.
How to use it
One listing, for an enrichment step in Clay, n8n or an agent
{"startUrls": ["https://www.facebook.com/marketplace/item/4690648534504900/"]}
One row with the title, price, currency, condition, description, all photos, location, seller and listed time. A bare id ("4690648534504900") works too. A listing that was removed returns a free not_found error row.
Keywords around a city
{"searchQueries": ["iphone 15", "ipad pro", "macbook air"],"location": "Chicago, Illinois","maxListingsPerSearch": 200}
Each keyword is its own search, labelled in search_query. Sort the rows by price or filter on condition to compare offers.
A precise area by coordinates
{"searchQueries": ["kayak"],"latitude": 47.6062,"longitude": -122.3321,"maxListingsPerSearch": 100}
Keep the rows with distance_km under your limit to stay inside your area.
New listings only, for alerts
{"searchQueries": ["herman miller aeron"],"location": "San Francisco, California","sortBy": "newest","daysSinceListed": "1","maxListingsPerSearch": 50}
Run it on a schedule (every hour or every morning) and compare listing_id with the previous run to see what is new.
A search link with its filters
{"startUrls": ["https://www.facebook.com/marketplace/la/search/?query=iphone%2015&minPrice=300&maxPrice=900&sortBy=creation_time_descend"]}
The filters in the link are used as they are. In our test this link returned 40 listings priced from 300 to 730, all listed that day.
A category feed, such as vehicles
{"startUrls": ["https://www.facebook.com/marketplace/nyc/vehicles/"],"maxListingsPerSearch": 300}
Vehicle rows carry vehicle_make, vehicle_model, vehicle_year, vehicle_mileage, vehicle_transmission, vehicle_fuel_type, vehicle_title_status and vehicle_seller_type when the seller filled them in.
Fast export from the search results only
{"searchQueries": ["couch"],"location": "Houston, Texas","maxListingsPerSearch": 1000,"includeDetails": false}
Rows come from the search results: title, price, city, seller name, listed time, delivery types and the main photo. In our test 1,000 listings took 74 seconds this way. Same price per listing.
Input parameters
| Parameter | Type | Default | What it does |
|---|---|---|---|
searchQueries | array of strings | empty | Keywords, one search each, for example guitar. |
location | string | New York, New York | City to search around, a Marketplace city slug such as nyc, or "lat,lng". |
latitude, longitude | numbers | empty | Search around this point instead of a city name. |
radiusKm | integer | 65 | Radius sent to Facebook, 1 to 500 km (a hint for the logged out search; filter on distance_km for an exact range). |
startUrls | array of strings | empty | Marketplace search, category or listing links, or bare listing ids. |
maxListingsPerSearch | integer | 50 | Most listings per keyword, search link or category link, 1 to 5,000. |
includeDetails | boolean | true | Reads each listing's description, condition, all photos, coordinates, seller rating and vehicle fields. |
minPrice, maxPrice | integers | empty | Price range in the local currency of the place you search. |
sortBy | string | best_match | best_match, newest, price_low_to_high, price_high_to_low, distance_nearest, vehicle_year_newest, vehicle_mileage_lowest. |
daysSinceListed | string | any | 1, 7 or 30 days. |
itemCondition | array of strings | empty | Any of new, used_like_new, used_good, used_fair. |
deliveryMethod | string | all | all, local_pick_up or shipping. |
proxyConfiguration | object | residential, United States | Apify residential proxy. Leave it as it is. |
Give searchQueries, startUrls or both. Up to 500 searches and listing links per run.
What data do you get?
One row per listing. Listing rows have no _type field; the summary, info and error rows do, so a filter on _type separates them.
| Field | What it is |
|---|---|
listing_id, listing_url | Marketplace listing id and link |
title | Listing title as the seller wrote it |
price, price_formatted, currency | Price as a number, as shown (e.g. $20), and the currency code |
strikethrough_price | Earlier price when the seller reduced it |
condition, condition_label | e.g. used_like_new and Used, like new (details) |
category, category_slug, category_id | e.g. Musical Instruments, instruments (details), and Facebook's category id |
description | Full description (details) |
location_text, location_city, location_state, location_display | e.g. River Edge, NJ |
latitude, longitude, postal_code, country_code | Listing area (details; postal code and country when Facebook gives them) |
distance_km | Distance from your search point (details) |
seller_name, seller_id, seller_type | Seller as Facebook shows it to a logged out visitor |
seller_rating, seller_rating_count, seller_joined_at, seller_is_business | Seller reputation (details) |
listed_at, listed_timestamp | When the listing was posted |
status, is_live, is_sold, is_pending | Availability |
primary_photo_url, photos, photo_count, has_video | Main photo and all photo links (all photos with details) |
delivery_types, is_shipping_offered | e.g. IN_PERSON, DOOR_PICKUP, PUBLIC_MEETUP |
attributes | Other facts the seller filled in, name to value (details) |
vehicle_make, vehicle_model, vehicle_year, vehicle_trim, vehicle_mileage, vehicle_mileage_unit, vehicle_transmission, vehicle_fuel_type, vehicle_exterior_color, vehicle_interior_color, vehicle_title_status, vehicle_seller_type, vehicle_owners, vehicle_vin, vehicle_features, dealership_name | Vehicle listings (details) |
subtitles | Extra lines on the card, e.g. 9K miles |
details_scraped, details_error | Whether the details were read, and why not |
search_query, search_location, search_latitude, search_longitude, search_url, input | The search or input that found the listing |
position, page | Place of the listing in its search, and its results page |
scraped_at | When the row was written |
Summary row (_type: "summary", never charged): searches_requested, searches_read, searches_failed, listings_requested, listings_read, listings_not_found, pages_read, listings_found, listings_delivered, charged_for, duplicates_skipped, details_ok, details_failed, transport (requests, refusals, megabytes), ended_on_deadline, stopped_by_max_cost, shortfall_reason when fewer listings came back than asked, and per_input, one entry per search or link with pages, listings_found, listings_delivered, reached_end and why it stopped. The same summary is saved as the OUTPUT record of the run.
Error rows (_type: "error", never charged): one per input that could not be read, with error_type (invalid_input, not_marketplace, not_supported, not_found, place_not_found, no_results, blocked, duplicate), identifier and reason.
Stable fields for automations
These were present in every listing row of our test runs, and their names will not change:
| Field | What it is |
|---|---|
listing_id | The key to store and join on |
listing_url | Link to the listing |
title | Listing title |
price | Price as a number |
price_formatted | Price as shown |
currency | Currency code |
location_text | City and state |
seller_name | Seller |
listed_at | When it was posted |
primary_photo_url | Main photo |
is_sold | Sold flag |
input | The input that found it |
condition, category, description, photos, latitude, longitude | With details on |
Optional, present only when Facebook shows a value: strikethrough_price, seller_rating (only sellers with ratings), postal_code and country_code (mostly vehicles), attributes, subtitles, and the vehicle fields.
Output examples
One listing from the "guitar" search around New York with details on (test run, 27 Oct 2026, photo links shortened):
{"listing_id": "1468156861821542","listing_url": "https://www.facebook.com/marketplace/item/1468156861821542/","title": "Mark II Acoustic Guitar with Bag & Acessories","price": 40,"price_formatted": "$40","currency": "USD","condition": "used_good","condition_label": "Used, good","category": "Musical Instruments","category_slug": "instruments","category_id": "676772489112490","description": "Sunburst Mark II acoustic guitar with a wooden body and a black and blue nylon gig bag. The guitar is approximately 83cm in length. It has a six-string configuration and a dark wood fretboard.","location_text": "Summit, NJ","location_city": "Summit","location_state": "NJ","latitude": 40.718078613281,"longitude": -74.371948242188,"distance_km": 30.8,"seller_name": "Octavio Rodriguez Lopez","seller_type": "User","seller_joined_at": "2024-04-06T19:33:18.000Z","seller_rating": 5,"seller_rating_count": 1,"listed_at": "2026-08-20T20:42:42.000Z","status": "AVAILABLE","is_sold": false,"primary_photo_url": "https://scontent-phl2-1.xx.fbcdn.net/v/t39.84726-6/778835522_1756311155607605_2317823729524088230_n.jpg?...","photos": ["https://scontent-phl2-1.xx.fbcdn.net/v/t39.84726-6/778835522_1756311155607605_2317823729524088230_n.jpg?...","https://scontent-phl2-1.xx.fbcdn.net/v/t45.5328-4/782582610_1086078977264322_269535885402769530_n.jpg?..."],"photo_count": 4,"delivery_types": ["IN_PERSON"],"details_scraped": true,"search_query": "guitar","search_location": "New York, New York","position": 4,"page": 1}
A vehicle from the nyc/vehicles category link (same day, trimmed):
{"listing_id": "1960514788240332","listing_url": "https://www.facebook.com/marketplace/item/1960514788240332/","title": "2011 BMW 3 series 328i Coupe 2D","price": 400,"currency": "USD","condition": "used","location_text": "New York, NY","distance_km": 0.8,"seller_name": "Versace Rose","listed_at": "2026-10-18T20:09:12.000Z","photo_count": 3,"vehicle_make": "BMW","vehicle_model": "3 Series","vehicle_year": 2011,"vehicle_mileage": 9000,"vehicle_mileage_unit": "MILES","vehicle_transmission": "AUTOMATIC","vehicle_exterior_color": "grey","vehicle_seller_type": "PRIVATE_SELLER","subtitles": ["9K miles"],"search_location": "New York, New York","search_url": "https://www.facebook.com/marketplace/nyc/vehicles/","position": 1}
An error row for a listing that no longer exists (nothing charged):
{ "_type": "error", "error_type": "not_found", "identifier": "https://www.facebook.com/marketplace/item/1111111111111111/", "listing_id": "1111111111111111", "reason": "Facebook has no public listing with this id (removed, sold and hidden, or private)." }
Pricing
Pay per event: you pay for the listings you receive, plus a flat $0.002 per run, whatever memory you choose. Reading the details of each listing costs nothing extra.
| Event | When it is charged | Free plan | Bronze (Starter) | Silver (Scale) | Gold (Business) |
|---|---|---|---|---|---|
listing-scraped | Once per listing row stored in your dataset | $5.58 per 1,000 | $4.50 per 1,000 | $3.42 per 1,000 | $2.34 per 1,000 |
run-start | Once per run, after the first listings are delivered | $0.002 | $0.002 | $0.002 | $0.002 |
The price of one listing is the price per 1,000 divided by 1,000. A listing costs the same with or without details, and the residential proxy is included.
Never charged:
- links that are not Marketplace links, Marketplace pages that are not a search, category or listing (each gets an error row);
- listings that were removed or are private;
- a listing that a second search of the same run finds again;
- listings past your
maxListingsPerSearch; - the summary, info and error rows;
- a run that delivers no listings: the start fee is charged only after the first listings are delivered;
- anything past your "Max cost per run". The actor checks the budget before each batch of rows and stops while the total is still below your limit, so the run ends SUCCEEDED with a partial result and a status message saying so.
Run it on a schedule
- Open the actor in Apify Console, set your input and click Save as a new task.
- In the task, open Schedules, click Add schedule and pick how often (every hour, every morning at 08:00 and so on).
- With
sortBy: "newest"anddaysSinceListed: "1", compare runs onlisting_idto find new listings, and onpriceto see price drops. - Optional: add an integration (Google Sheets, Slack, a webhook) so each run lands where your team works.
FAQ
What does this actor read?
Facebook Marketplace as Facebook shows it to someone who is not logged in: the search results and category feeds, and, with details on, each listing's own details and photos. It does not log in, message sellers or read anything behind a sign in.
How many listings can I get per search?
Facebook shows a logged out visitor about 1,700 to 2,200 listings per search and then ends the list. In our tests on 27 Oct 2026: 2,224 for "guitar" around New York, 2,087 for "sofa" around Austin, 1,732 for "iphone" around Los Angeles. To go further, split the search: several keywords, price bands with minPrice and maxPrice, or nearby cities. The summary row says per search whether the end of the list was reached (reached_end).
Why are some listings farther away than my radius?
Facebook's logged out search treats the radius as a hint: in our tests a 2 km and a 300 km radius returned the same first page around New York. Results come nearest areas first. With details on, each row has distance_km from your search point; filter on it to keep an exact range.
What is the difference between includeDetails on and off?
Off, each row comes from the search results: title, price, city and state, seller name, listed time, delivery types and the main photo. On, the details add the description, condition, category name, all photos, coordinates and distance, postal code, the currency code from Facebook, the seller's rating and join date, and vehicle fields. On is slower (600 listings in 159 seconds in our test against 1,000 in 74 seconds off) and costs the same.
Do I need a Facebook account, cookies or a proxy?
No. The actor never logs in and never asks for your cookies. It reads Marketplace through Apify residential proxy, which is included in the price; Facebook refuses Marketplace requests from datacenter proxies, so leave the proxy setting as it is.
Which places work?
Any place Marketplace covers. A city name is looked up with Facebook's own place search; write it as "City, State" or "City, Country" when the name exists in several countries (London in Ontario or in the United Kingdom). Coordinates always work. Prices and the currency follow the place you search.
Is the seller's phone number or profile included?
No contact details. The row has the seller's name and the id Facebook shows to a logged out visitor, plus their rating and when they joined. Buyers reach Marketplace sellers through Messenger, which needs a Facebook account. A few sellers hide their name from logged out visitors; in our 600 row test the name was missing on 7 rows.
Why are there listings from eBay?
Facebook mixes partner listings into Marketplace search, mostly from eBay. They have seller_name "EBay Marketplace", seller_type "Page" and delivery_types SHIPPING_OFFSITE, and they ship from far away (often 2,000 km or more from your search point). Facebook gives fewer details for them: no condition, category or coordinates. Filter on delivery_types to drop them, or set deliveryMethod to local_pick_up. In our test they were 6 of 600 rows.
How long does a run take?
In our tests: 17 seconds for the "Try it" input (30 listings with details), 159 seconds for 600 listings across 3 searches with details, and 74 seconds for 1,000 listings with details off. The default time limit is 3,600 seconds; the actor stops before it and keeps every row.
Can I use it from Claude, ChatGPT or Cursor (MCP)?
Yes, through Apify's MCP server. Connector URL: https://mcp.apify.com/?tools=themineworks/facebook-marketplace-scraper
- Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: turn on developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code:
claude mcp add -t http facebook-marketplace-scraper "https://mcp.apify.com/?tools=themineworks/facebook-marketplace-scraper"
Which formats can I download?
JSON, CSV, Excel, XML, RSS and HTML from the run's Storage tab or through the API. The dataset has three ready views: Listings, Prices and Vehicles. In CSV and Excel, photos and attributes are spread over numbered or named columns.
Is it legal to scrape Facebook Marketplace?
The actor reads only listings that Facebook shows to anyone without logging in. Listings carry seller names, which can be personal data. You are responsible for how you use the data and for following Facebook's terms and data protection law such as the GDPR and the CCPA. This is general information, not legal advice.
Integrations
- Google Sheets: send each run's listings to a sheet with Apify's Google Sheets integration; one row per listing fits a sheet as is.
- Make, Zapier and n8n: start a run from a new row in your sheet or CRM, or on a schedule, and pass the listing rows on when the run finishes, for example "new road bikes under $500 near us every morning to Slack".
- Clay: call the actor with one listing link per row to add its price, description, photos and seller.
- Webhooks: have Apify call your URL when a run succeeds, then fetch the dataset.
- API and SDKs: run it from Python or JavaScript with the Apify client, or with a plain HTTP call (see "Copy to your AI assistant" above).
- MCP clients: Claude, ChatGPT, Cursor and VS Code can run it as a tool through the connector URL in the FAQ.
More from The Mine Works
E-commerce and marketplaces
- Ozon.ru Scraper
- ⭐ Amazon Reviews Scraper
- Amazon Product Scraper
- Etsy Listings Scraper
- AliExpress Scraper
- Kleinanzeigen.de Scraper
- Carsales.com.au Scraper
- eBay Product Listings Scraper
- Shopify Store Scraper
- 🛒 TikTok Shop Scraper
- Walmart Product & Price Scraper
- Vinted Scraper
Social media and video
Leads and business directories
Marketing, SEO and reviews
Real estate
Science, health and government data
Jobs and hiring
Company and business data
Food and local services
Developer and AI tools
More tools
Support
Found a search that returns fewer listings than the site, or a field that comes back empty? Open an issue in the Issues tab with the input and the run ID, and we will look at it. For a field you need or a new source, email dmineworks@gmail.com.
Search Facebook Marketplace by keyword and city, or paste search, category and listing links, and get every listing back as one row with price, currency, condition, description, photos, location and seller, no login.

