Facebook Marketplace Scraper: Listings, Prices, Sellers avatar

Facebook Marketplace Scraper: Listings, Prices, Sellers

Pricing

from $2.34 / 1,000 listings

Go to Apify Store
Facebook Marketplace Scraper: Listings, Prices, Sellers

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

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

30 Facebook Marketplace listings with description, condition and all photos in 17 seconds

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 error row with the reason and are never charged.

Run it on Apify

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 nyc or la, or give latitude and longitude. 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 as https://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 includeDetails on (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_km from 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.

{
"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

ParameterTypeDefaultWhat it does
searchQueriesarray of stringsemptyKeywords, one search each, for example guitar.
locationstringNew York, New YorkCity to search around, a Marketplace city slug such as nyc, or "lat,lng".
latitude, longitudenumbersemptySearch around this point instead of a city name.
radiusKminteger65Radius sent to Facebook, 1 to 500 km (a hint for the logged out search; filter on distance_km for an exact range).
startUrlsarray of stringsemptyMarketplace search, category or listing links, or bare listing ids.
maxListingsPerSearchinteger50Most listings per keyword, search link or category link, 1 to 5,000.
includeDetailsbooleantrueReads each listing's description, condition, all photos, coordinates, seller rating and vehicle fields.
minPrice, maxPriceintegersemptyPrice range in the local currency of the place you search.
sortBystringbest_matchbest_match, newest, price_low_to_high, price_high_to_low, distance_nearest, vehicle_year_newest, vehicle_mileage_lowest.
daysSinceListedstringany1, 7 or 30 days.
itemConditionarray of stringsemptyAny of new, used_like_new, used_good, used_fair.
deliveryMethodstringallall, local_pick_up or shipping.
proxyConfigurationobjectresidential, United StatesApify 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.

FieldWhat it is
listing_id, listing_urlMarketplace listing id and link
titleListing title as the seller wrote it
price, price_formatted, currencyPrice as a number, as shown (e.g. $20), and the currency code
strikethrough_priceEarlier price when the seller reduced it
condition, condition_labele.g. used_like_new and Used, like new (details)
category, category_slug, category_ide.g. Musical Instruments, instruments (details), and Facebook's category id
descriptionFull description (details)
location_text, location_city, location_state, location_displaye.g. River Edge, NJ
latitude, longitude, postal_code, country_codeListing area (details; postal code and country when Facebook gives them)
distance_kmDistance from your search point (details)
seller_name, seller_id, seller_typeSeller as Facebook shows it to a logged out visitor
seller_rating, seller_rating_count, seller_joined_at, seller_is_businessSeller reputation (details)
listed_at, listed_timestampWhen the listing was posted
status, is_live, is_sold, is_pendingAvailability
primary_photo_url, photos, photo_count, has_videoMain photo and all photo links (all photos with details)
delivery_types, is_shipping_offerede.g. IN_PERSON, DOOR_PICKUP, PUBLIC_MEETUP
attributesOther 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_nameVehicle listings (details)
subtitlesExtra lines on the card, e.g. 9K miles
details_scraped, details_errorWhether the details were read, and why not
search_query, search_location, search_latitude, search_longitude, search_url, inputThe search or input that found the listing
position, pagePlace of the listing in its search, and its results page
scraped_atWhen 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:

FieldWhat it is
listing_idThe key to store and join on
listing_urlLink to the listing
titleListing title
pricePrice as a number
price_formattedPrice as shown
currencyCurrency code
location_textCity and state
seller_nameSeller
listed_atWhen it was posted
primary_photo_urlMain photo
is_soldSold flag
inputThe input that found it
condition, category, description, photos, latitude, longitudeWith 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.

EventWhen it is chargedFree planBronze (Starter)Silver (Scale)Gold (Business)
listing-scrapedOnce 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-startOnce 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

  1. Open the actor in Apify Console, set your input and click Save as a new task.
  2. In the task, open Schedules, click Add schedule and pick how often (every hour, every morning at 08:00 and so on).
  3. With sortBy: "newest" and daysSinceListed: "1", compare runs on listing_id to find new listings, and on price to see price drops.
  4. 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.

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.

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

Social media and video

Leads and business directories

Marketing, SEO and reviews

LinkedIn

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.