Facebook Marketplace Scraper avatar

Facebook Marketplace Scraper

Pricing

from $3.00 / 1,000 listings

Go to Apify Store
Facebook Marketplace Scraper

Facebook Marketplace Scraper

Search Facebook Marketplace by keyword, city, category, price, condition and date listed. Get title, price, currency, location, photo, seller and posting time for every listing, plus description, condition and vehicle details on request. No Facebook account needed.

Pricing

from $3.00 / 1,000 listings

Rating

0.0

(0)

Developer

Philip Kirkbride

Philip Kirkbride

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 hours ago

Last modified

Features

Limited permissions

Share

Facebook Marketplace Scraper - Listings, Prices & Sellers

Search Facebook Marketplace the way you would in your browser: type what you are looking for, pick a city, and narrow it down by category, price range, condition, how recently it was listed and how far away. Every listing becomes one row with its title, price and currency, city and state, main photo, seller name, the time it was posted, sold or pending status and delivery options. Searches return hundreds of listings each, not just the first screen.

Turn on full listing details to add the description, condition, all photos, the listing attributes, the category name and, for cars and other vehicles, make, model, trim, mileage, transmission, colours and title status. You can also paste Marketplace search links straight from your browser. No Facebook account is needed.

Built for resellers, car dealers, price researchers and anyone who wants Marketplace listings in a spreadsheet or a deal alert.

What sets it apart

  • Marketplace's own filters as inputs: category, price range, condition, days since listed, radius and sort order, or paste a search link with its filters.
  • Hundreds of listings per search, with a cap per search and a cap for the whole run.
  • Vehicle fields (make, model, trim, mileage, transmission, colours, title status, seller type) with full details.
  • No duplicates across searches, and fields a listing does not show are null, never guessed.
  • $3 per 1,000 listings, $4 per 1,000 with full details, plus $0.005 per run. Failed searches and failed detail pages are not charged extra.

Quick start

Open the Actor in Console and press Start: the prefilled form searches "bicycle" in New York and returns up to 100 listings (about $0.305). An empty input ({}) returns a small sample: up to 10 "bicycle" listings in New York, and the status message says it was a sample. A searchQueries or startUrls list left empty on purpose stops with an input error.

{
"searchQueries": [
"bicycle"
],
"location": "nyc",
"maxItemsPerSearch": 100,
"includeDetails": false
}

More examples:

  • Cheapest desks over $20 in Chicago with full details: {"searchQueries": ["desk"], "location": "chicago", "minPrice": 20, "sortBy": "priceLowToHigh", "includeDetails": true, "maxItemsPerSearch": 50}
  • Newest cars under $9,000 in Austin: {"category": "vehicles", "location": "austin", "maxPrice": 9000, "sortBy": "newest", "maxItemsPerSearch": 300}
  • Several products in one city, listed this week: {"searchQueries": ["iphone 13", "ipad", "macbook"], "location": "la", "daysSinceListed": "7"}
  • Free stuff near you: {"category": "free", "location": "seattle", "sortBy": "distance"}
  • A search you set up on Marketplace: {"startUrls": [{"url": "https://www.facebook.com/marketplace/houston/search/?query=couch&maxPrice=300"}]}

Input

InputTypeDefaultMeaning
searchQueriesarray—What to search for, as you would type it on Marketplace. Each term is one search.
locationstringnycThe city as it appears after /marketplace/ in a Marketplace link (nyc, la, chicago, austin, london, toronto), or the numeric location id from such a link.
categorystring—One of vehicles, electronics, furniture, household, apparel, family, toys, hobbies, sports, instruments, entertainment, garden, pets, classifieds, free. With search terms it narrows them; on its own it lists the category.
startUrlsarray—Links copied from a Marketplace search or category page. The link's own filters are kept.
maxItemsPerSearchinteger100Cap on rows for each search term or link (up to 5,000).
maxItemsinteger1000Cap on rows for the whole run (up to 50,000). The empty-input sample stops at 10.
includeDetailsbooleanfalseOpen each listing to add the description, condition, all photos, attributes, category name and vehicle details. Slower, and charged as a detail add-on.
minPrice, maxPriceinteger—Price range in the local currency of the location.
sortBystringrelevancerelevance, newest, priceLowToHigh, priceHighToLow or distance.
daysSinceListedstring—1, 7 or 30: only listings posted in that many days.
itemConditionarrayallAny of new, used_like_new, used_good, used_fair.
radiusKmintegerabout 65Distance around the location to search, in kilometres.

Give at least one search term, a category or a Marketplace link. The filters apply to every search term and to the category; links keep their own. A listing that appears in more than one search is returned once.

What it returns

The dataset contains one row per listing:

FieldMeaning
listingId, urlMarketplace listing id and the listing page.
titleListing title.
price, priceText, currencyAsking price as a number (0 for free items), as shown ($1,200, CA$20, £10) and as an ISO code.
originalPriceTextThe earlier price Marketplace shows struck through after a price drop.
city, state, locationTextWhere the item is.
imageUrl, photosMain photo, and every photo with full details.
subtitlesExtra lines on the result card, such as a car's mileage.
sellerNameThe seller's name exactly as shown on the listing page.
postedAtWhen the listing was posted (UTC, ISO 8601).
isSold, isPendingSold and pending status.
deliveryTypes, shippingOfferedPickup and delivery options (IN_PERSON, DOOR_PICKUP, SHIPPING_OFFSITE, …) and whether shipping is offered.
categoryId, categoryNameMarketplace category id, and its name with full details (for example Furniture).
condition, attributesCondition (for example Used - like new) and the other listing attributes, with full details.
descriptionThe seller's description (with full details).
vehicleFor vehicle listings with full details: make, model, trim, mileage, mileageUnit, transmission, exteriorColor, interiorColor, fuelType, titleStatus, sellerType. Otherwise null.
detailLevellisting for search-result fields only, full when the listing's details were added.
searchInput, searchUrlThe search term, category or link you supplied, and the Marketplace search the row came from.
scrapedAtCollection time (UTC, ISO 8601).
errorAlways null in the dataset. Failures are reported in the run summary instead.

Fields the listing does not show are null (or an empty list), never guessed.

The run summary (OUTPUT) reports results, detailedResults, one entry per started search in searches (pages read, listings encountered and rows delivered), errors with the list at searchErrors, and detailErrors for listings whose details could not be opened.

After five consecutive searches return zero listings, the run stops and logs a warning naming the remaining searches skipped. emptySearches counts successful searches with zero listings; searchesSkipped and skippedSearches report how many searches were not started and their inputs and URLs. stoppedBy: "emptySearchLimit" identifies this stop. Searches that fail or return listings (even duplicates) break the empty-search streak. A search also ends after three result pages in a row add no new listings, including pages containing only duplicates. These stops do not add any charge event.

Use cases

  • Price research: search one product across several cities and compare price and postedAt.
  • Deal alerts: schedule a run sorted by newest with a maxPrice and get the fresh listings every hour.
  • Used-car lists: collect the vehicles category with full details for make, model, mileage and title status.
  • Reseller sourcing: search free or a low price range in your city and sort by distance.
  • Market snapshots: export a category to a spreadsheet to see what sells in a city and at what price.

Output example

{
"listingId": "2501167960380368",
"url": "https://www.facebook.com/marketplace/item/2501167960380368/",
"title": "Small Wooden Desk",
"price": 20,
"priceText": "$20",
"currency": "USD",
"originalPriceText": null,
"city": "Lake in the Hills",
"state": "IL",
"locationText": "Lake in the Hills, IL",
"imageUrl": "https://scontent-ord5-1.xx.fbcdn.net/v/t39.84726-6/707981212_n.jpg",
"photos": [
"https://scontent-ord5-1.xx.fbcdn.net/v/t39.84726-6/707981212_n.jpg",
"https://scontent-ord5-1.xx.fbcdn.net/v/t39.84726-6/707981213_n.jpg"
],
"subtitles": [],
"sellerName": "Samantha L.",
"postedAt": "2026-05-26T23:37:10Z",
"isSold": false,
"isPending": false,
"deliveryTypes": [
"IN_PERSON",
"DOOR_PICKUP"
],
"shippingOffered": false,
"categoryId": "1583634935226685",
"categoryName": "Furniture",
"condition": "Used - Good",
"description": "Small wooden desk with shelves, used in a college apartment. Good condition. Pickup only.",
"attributes": [
{
"name": "Condition",
"value": "Used - Good"
},
{
"name": "Material",
"value": "Wood"
}
],
"vehicle": null,
"detailLevel": "full",
"searchInput": "desk",
"searchUrl": "https://www.facebook.com/marketplace/chicago/search/?query=desk&minPrice=20&sortBy=price_ascend",
"scrapedAt": "2026-10-20T05:02:11Z",
"error": null
}

Failed searches and listings

A location Marketplace does not recognise, or a search that could not be read, is reported in the run summary at OUTPUT.searchErrors with its input, code and message. When a listing's full details cannot be opened, the listing is still delivered with detailLevel listing and is listed in OUTPUT.detailErrors. Failures are never dataset rows and are not charged. If no listing at all could be collected, the run ends with an error instead of finishing green with an empty dataset.

Limits and caveats

  • Only what Marketplace shows publicly on a listing is returned. Sellers' contact details are not shown on Marketplace and are not collected.
  • The location is a Marketplace city name or location id, not a street address. Use radiusKm to widen or narrow the area.
  • Marketplace mixes in some listings from nearby areas and, for some searches, items that ship from further away; city, state and deliveryTypes show where each one is.
  • Prices are in the listing's own currency. US-dollar prices show as $, other dollars as CA$, A$, MX$ and so on.
  • Full details take about 1.5 to 2 seconds per listing; search results alone come back about 25 at a time.
  • Automated access is subject to Facebook's terms; use this actor only where you have the necessary permissions and a lawful basis, and handle personal data (such as seller names) in line with the privacy laws that apply to you.

FAQ

Do I need a Facebook account? No. Only public listing information is collected.

How do I find my city's location name? Open Marketplace in your browser, choose the city, and copy the word after /marketplace/ in the address bar (for example nyc in facebook.com/marketplace/nyc/). You can also paste that whole search link into startUrls.

How many listings can one search return? Usually several hundred to over a thousand for a broad search in a big city; set maxItemsPerSearch up to 5,000. Narrow searches return fewer.

How fast is it? Search results: roughly 1,000 listings in 2 to 3 minutes. With full details: roughly 1,000 listings in 25 to 35 minutes.

How fresh is the data? Every run reads Marketplace at run time; nothing is cached between runs. postedAt says when each listing went up.

Which export formats are available? JSON, CSV, Excel, XML or RSS from the dataset, or read the rows with the Apify API.

Price

$0.003 per listing, $0.004 per detailed listing ($0.003 listing + $0.001 detail add-on), plus $0.005 per run start. A detailed listing is a row with includeDetails on whose details were added; a listing whose details could not be opened is charged as a listing. The run-start event is charged per GB of memory; the default 512 MB run is one start event. The start is charged even if the run saves no results. Failed searches are not charged. When your maximum charge for the run is reached, the run stops and keeps the rows already saved. Platform usage is included in these prices.

Worked costs: the 100-listing prefill run is about $0.305; 1,000 listings about $3.005; 1,000 listings with full details about $4.005.

Scheduling and monitoring

For deal alerts, schedule a search sorted by newest (optionally with daysSinceListed: "1" and a maxPrice) every hour or day, and keep the listings whose listingId you have not seen before. Each run is a full snapshot and charges every listing it returns; there is no built-in "new listings only" mode, so keep maxItemsPerSearch small for frequent runs.