Facebook Marketplace Scraper avatar

Facebook Marketplace Scraper

Pricing

from $0.45 / 1,000 results

Go to Apify Store
Facebook Marketplace Scraper

Facebook Marketplace Scraper

Scrape Facebook Marketplace listings by keyword, city or link: price, photos, description, location, posting time and vehicle specs. Search wide areas, watch for new listings with monitoring mode, and get only listings that match your filters. No login needed.

Pricing

from $0.45 / 1,000 results

Rating

5.0

(1)

Developer

Coder

Coder

Maintained by Community

Actor stats

12

Bookmarked

377

Total users

63

Monthly active users

3 days ago

Last modified

Share

Collect Facebook Marketplace listings by keyword, by vehicle make, or from any Marketplace link, with price, location, photos and status, and optionally the full listing: description, every photo and video, seller type, dealership contacts and vehicle specs. No login, no cookies.

Use it for price monitoring, deal alerts, vehicle market analysis, inventory research and resale data pipelines.

New: type any place as the location (Toronto, Austin, Texas, a postal code), cover a whole region with Search radius, filter by delivery method, and run on a schedule with Only new listings at no extra cost.

For Facebook Pages, Groups or profile posts, use the Facebook Posts Scraper. For comments and replies, use the Facebook Comments Scraper.


What you get

Each row is one Marketplace listing:

SectionWhat it contains
IdentityListing ID, title, and link to the listing
priceFormatted price, amount and currency
locationCity, state or province, and full location label
MediaPhoto URLs (every photo, plus videos, with detailed information on)
StatusSold and pending flags
categoryMarketplace category ID
creation_timeWhen the listing was posted
subtitlesFacebook's short facts: mileage on vehicles (145K km), street address on property
Extrasdelivery_options, is_live, previous_price (when the price was reduced), custom_title (e.g. 2 beds · 1 bath), video_id, seller (when shown)
sourceUrlThe search or link that found this listing

With Fetch detailed information on (and always for listing links), each row also has the description, creation time, condition, delivery options, seller type and dealership contacts, vehicle details (mileage, VIN, colours, fuel, transmission ...) and every other field Facebook shows on the listing.

Results appear in the dataset while the run is going.


Quick start

  1. Add a row under Search by keyword (what + location) and/or Search vehicles (make + location).
  2. Optionally set Filters (price, condition, date listed, delivery, availability, sort) and Vehicle filters (year, mileage, transmission).
  3. Set Maximum listings per search (default 10). Turn on Fetch detailed information if you need descriptions and seller details.
  4. Click Start.
{
"keywordSearches": [
{ "query": "sectional sofa", "locationSlug": "Toronto" },
{ "query": "sectional sofa", "locationSlug": "Austin, Texas" }
],
"maxPrice": 800,
"conditions": ["used_good", "used_like_new"],
"dateListed": "last_7_days",
"maxListings": 50
}
{
"vehicleSearches": [{ "make": "honda", "locationSlug": "Montreal" }],
"searchRadiusKm": 200,
"vehicleMinYear": 2015,
"vehicleMaxMileage": 120000,
"vehicleTransmission": "automatic",
"sortBy": "price_ascend",
"maxListings": 100,
"fetchDetails": true
}

Input

Search by keyword: one row per search, Search for + Location. Search vehicles: one row per search, Make (or All) + Location.

Location accepts a city name (Toronto, Austin, Texas, Lahore), a postal code, or the city part of a Marketplace link (sanfrancisco from facebook.com/marketplace/sanfrancisco). If Facebook does not know a location, the log says so and the other searches carry on.

Area

Facebook shows logged-out visitors listings within about 65 km of one point, even when its own page offers a bigger radius. Search radius (km) (default 65, up to 500) covers a wider area for you: the region is searched as several overlapping 65 km areas, one page from each in turn, and duplicates are removed. Maximum listings per search still caps each row.

Filters (keyword and vehicle rows)

FieldOptions
Minimum / Maximum priceIn the local currency
ConditionNew, used – like new, used – good, used – fair (keyword rows only: most vehicle listings have no condition set)
Date listedAny time, last 24 hours, last 7 days, last 30 days
Delivery methodAll, local pickup, shipping (shipping is mostly a US option)
AvailabilityAvailable or sold
SortSuggested, newest, price, distance; mileage and year for vehicles
Exact keyword matchStricter matching of the search words

Vehicle filters (vehicle rows)

Year from / to, Mileage from / to, Transmission.

Body style, colours, vehicle history, bedrooms and similar filters exist on Facebook only for logged-in visitors; Facebook ignores them for logged-out searches, so they are not offered here. If a pasted link contains them, the log says so.

  • Marketplace search links: set up any search on Facebook (any category, city and filters, including the extra filters some searches show, such as colour or material), copy the link and paste it. Each link is scraped as it is; the form filters do not apply to links.
  • Listing links: facebook.com/marketplace/item/.... Each returns the full listing and is billed as a listing detail.

Rentals: paste a facebook.com/marketplace/<city>/propertyrentals link, or search by keyword (2 bedroom apartment).

Results

FieldDefaultWhat it does
Maximum listings per search10Limit per search row and per search link
Fetch detailed informationoffFull listing for each result (billed as listing detail)
Remove duplicates across searchesoffSave each listing once; the first search that finds it sets sourceUrl
Only new listings (monitoring)offSave only listings posted since the previous run of the same search

Monitoring: schedule the Actor (for example every hour) with this on. The first run saves the current listings; later runs save only new ones. Each search is tracked on its own, so adding a search to a scheduled task starts that search fresh. Nothing extra is charged.


What you will see during a run

Plain-language progress, for example:

  • Starting: 2 searches (up to 50 listings each, with full details).
  • honda vehicles in Montreal: 200 km area, searched as 19 overlapping 65 km circles ...
  • sectional sofa in toronto: 50 listings.
  • Still working... 120 listings so far.
  • Done: 150 listings.

One search that cannot be finished never stops the others.


Output overview

Dataset structure

  • Results are saved to a single Apify dataset
  • Each row is one listing object with nested sections (price, location, etc.)
  • Use sourceUrl on each row to see which search or item URL produced it

Field presence varies by listing and category: not every listing includes a price, full description, or seller details. Empty arrays ([]) or null mean no data was published for that listing — not necessarily an error.

Output modes

ModeWhenWhat you get
Summary (default)fetchDetails: false on search resultsCore fields: id, url, title, price, location, images, status flags, category, sourceUrl
DetailedfetchDetails: true on search results, or any direct item URLFull listing data — all fields Facebook exposes on the detail page

Output fields

Summary mode (default)

FieldDescription
idUnique Marketplace listing identifier
urlDirect link to the listing page
titleListing title
priceObject with formatted, amount, and currency when available
is_freetrue for free listings (their price.amount is 0.0)
locationObject with city, state, and full when available
imagesArray of image URLs
is_soldWhether the listing is marked sold
is_pendingWhether the listing is marked pending
categoryMarketplace category identifier when available
sourceUrlThe search URL or item URL that produced this listing

Additional fields in detailed mode

FieldDescription
descriptionFull listing description text
sellerSeller object — see Seller and dealership details
conditionItem condition (for example USED)
creation_timeWhen the listing was posted (timestamp and formatted)
is_liveWhether the listing is currently live
videosVideo URLs when available
delivery_optionsDelivery or pickup options when listed
accessibility_captionsImage accessibility captions when available
latitude / longitudeCoordinates when available (inside location)

Vehicle and category-specific listings may include additional metadata fields depending on what Facebook publishes for that item.

Seller and dealership details

In detailed mode every row has a seller object with the same keys. On vehicle listings it tells you whether the seller is a private seller or a dealership, and dealerships include their business contact details.

FieldDescription
seller.typeprivate or dealership for vehicles; null for other categories
seller.dealership_nameDealership name
seller.phoneDealership phone number, e.g. +1 832-582-6655
seller.phone_internationalThe same number in international format, e.g. +18325826655
seller.addressObject with street, city, region, postal_code, country
seller.websiteDealership website when listed
seller.name / seller.idSeller profile, only when Facebook publishes it (usually null)

seller.type reflects what the seller selected when listing the vehicle. Dealers who list as individuals appear as private.

"seller": {
"name": null,
"id": null,
"profile_url": null,
"type": "dealership",
"dealership_name": "Texas Car Direct",
"phone": "+1 832-582-6655",
"phone_international": "+18325826655",
"address": {
"street": "5707 Schumacher Ln",
"city": "Houston",
"region": "Texas",
"postal_code": "77057-7106",
"country": "United States"
},
"website": null
}

Example output

The excerpts below come from a real run with keyword searches, vehicle searches, direct search URLs, and a direct item URL. Full output is available in the run dataset.

Example input

{
"keywordSearches": [
{
"query": "sectional sofa",
"locationSlug": "montreal"
}
],
"vehicleSearches": [
{
"make": "lucid",
"locationSlug": "montreal"
}
],
"itemUrls": [
{
"url": "https://www.facebook.com/marketplace/item/2082392026023664"
}
],
"minPrice": 500,
"maxPrice": 75000,
"conditions": ["used_good", "used_like_new"],
"dateListed": "last_30_days",
"fetchDetails": false,
"maxListings": 50
}

Excerpt — keyword search listing (summary mode)

{
"id": "1718926402591769",
"url": "https://www.facebook.com/marketplace/item/1718926402591769/",
"title": "Reversible Must Grey Sectional Sofa GREAT CONDITION",
"price": {
"amount": "1500.0",
"currency": null,
"formatted": "CA$1,500"
},
"location": {
"city": "Westmount",
"state": "QC",
"full": "Westmount, Quebec"
},
"images": [
"https://scontent-lhr6-2.xx.fbcdn.net/v/t39.84726-6/724350627_1214969875027207_4872060484073252579_n.jpg?..."
],
"is_sold": false,
"is_pending": false,
"category": "1583634935226685",
"sourceUrl": "https://www.facebook.com/marketplace/montreal/search/?query=sectional%20sofa&exact=false&minPrice=500&maxPrice=75000&itemCondition=used_good%2Cused_like_new&daysSinceListed=30"
}

Excerpt — vehicle search listing (summary mode)

{
"id": "1004923282488083",
"url": "https://www.facebook.com/marketplace/item/1004923282488083/",
"title": "2027 Artisanal 4x8",
"price": {
"amount": "1400.0",
"currency": null,
"formatted": "CA$1,400"
},
"location": {
"city": "St-Sauveur",
"state": "QC",
"full": "Saint-Sauveur-des-monts, Quebec"
},
"images": [
"https://scontent.fsap12-1.fna.fbcdn.net/v/t39.30808-6/718297817_10230478000924332_5433532330628870229_n.jpg?..."
],
"is_sold": false,
"is_pending": false,
"category": "807311116002614",
"sourceUrl": "https://www.facebook.com/marketplace/montreal/vehicles?make=1392638391528793&exact=false&minPrice=500&maxPrice=75000&sortBy=vehicle_year_descend&itemCondition=used_good%2Cused_like_new&daysSinceListed=30&minYear=2015&maxYear=2026&maxMileage=120000&carType=sedan%2Csuv%2Cwagon&transmissionType=automatic"
}

Excerpt — direct item URL (always detailed)

{
"id": "2082392026023664",
"url": "https://www.facebook.com/marketplace/item/2082392026023664/",
"sourceUrl": "https://www.facebook.com/marketplace/item/2082392026023664",
"title": "2010 Audi Q5",
"price": {
"formatted": "CA$2,400",
"amount": "2400.0",
"currency": "CAD"
},
"description": "Audi q5 2010 moins de 177 000 km\nQuelle trace de rouille ,direction et bearing de roue (4) changer \nc'était mon véhicule d'hiver j'ai 3000$ de pièce neuve que je peux donner avec si tu négocie pas ",
"location": {
"city": "Lévis",
"state": "QC",
"full": "Lévis, QC",
"latitude": 46.760559082031,
"longitude": -71.240844726562
},
"images": [
"https://scontent.fasu11-2.fna.fbcdn.net/v/t39.30808-6/735018237_10242986274651025_6251349529862557825_n.jpg?..."
],
"category": "807311116002614",
"condition": "USED",
"creation_time": {
"timestamp": 1782779408,
"formatted": "2026-06-30 00:30:08",
"iso": "2026-06-30T00:30:08"
},
"is_live": true,
"is_sold": false,
"is_pending": false,
"delivery_options": ["IN_PERSON"]
}

Combining input modes

You can use multiple input modes in a single run.

{
"startUrls": [
{
"url": "https://www.facebook.com/marketplace/montreal/search?query=iphone%2013"
}
],
"keywordSearches": [
{
"query": "desk",
"locationSlug": "sanfrancisco"
}
],
"vehicleSearches": [
{
"make": "honda",
"locationSlug": "montreal"
}
],
"itemUrls": [
{
"url": "https://www.facebook.com/marketplace/item/2082392026023664"
}
],
"minPrice": 500,
"maxPrice": 75000,
"deduplicateListings": true,
"maxListings": 50
}
  • Each search URL, keyword row, and vehicle row is processed independently, up to Maximum listings per search each
  • Direct item URLs each produce one listing regardless of that cap
  • Enable Deduplicate listings across searches to save each listing only once across overlapping results
  • Use sourceUrl on each row to see which input produced it
  • If one search fails or returns no results, others can still complete

Free plan limits

On the Apify free plan, the Actor may automatically apply:

LimitValue
Searches per run (rows + links)3 (the first ones in your input)
Maximum listings per search20
Listing links per run20
Search radius200 km

Paid Apify plans can use the full input without these caps. If limits apply, the run log will include a short notice.


Data quality and limitations

Public listing data
The Actor reads the same listing data shown on Facebook Marketplace search and item pages. It does not access private seller accounts or unpublished listings.

Coverage varies by listing and category
Prices, descriptions, seller details, and images are not always published. Some fields may be null or empty even when the listing is live on Marketplace.

Links vs search rows
The form filters apply only to keyword and vehicle rows. Search links and listing links are scraped exactly as provided.

Search radius
Facebook shows logged-out visitors about 65 km around one point. Search radius covers more by searching several overlapping areas.

Logged-in-only filters
Body style, colours, vehicle history, bedrooms, bathrooms, size and property type are applied by Facebook only for logged-in visitors. Links containing them are still scraped, without that narrowing, and the log says so.

Active listings change
Listings are posted, updated, sold, and removed on the live site. Re-run on a schedule to track changes over time.

Free listings
Free listings have price.amount set to 0.0 and is_free: true, so they sort and filter as zero.

Search area
Keyword and vehicle rows only keep listings inside the searched area (a little past the radius is allowed). Listings Facebook shows from much farther away are left out and not charged; the run log says how many.

Compliance
You are responsible for using collected data in line with applicable laws and Facebook's terms of service. Output can include seller and dealership contact details such as names, phone numbers, and addresses; handling personal data lawfully (for example under GDPR or CCPA) is your responsibility.


Tips for best results

  1. Copy URLs from the site — Use real Marketplace search URLs after setting keywords, location, and filters in the browser.
  2. Use keyword searches for quick setup — Enter what and where (Toronto, Austin, Texas) without building URLs.
  3. Use vehicle searches for cars and trucks — Pick a make and location, then apply year, mileage and transmission filters. Condition is not used for vehicle rows.
  4. Sort by newest for alerts — Newest-first searches return listings posted minutes ago.
  5. Start with a small maxListings — Test your search with 10–20 listings before large exports.
  6. Enable deduplication for overlapping searches — Turn on Deduplicate listings across searches when multiple searches may return the same items.
  7. Use direct item URLs for known listings — Paste /marketplace/item/... links when you need full detail for specific listings.
  8. Filter in the dataset — Export to JSON, CSV, or Excel, then filter on title, price.formatted, location.full, or sourceUrl.
  9. Schedule recurring runs — Use Apify schedules with Only new listings on to get just what was posted since the last run.

Frequently asked questions

Why was my search URL skipped?
The URL may not be a valid Facebook Marketplace page, or it could not be processed in that run. Check the run log for warnings.

Why do global filters not affect my direct search URL?
Direct search URLs are scraped exactly as provided. Use Keyword searches or Vehicle searches if you want to control filters from the input form.

Why is price null?
Items without a listed price and some categories may not expose a numeric price. The formatted price appears in price.formatted when shown on the site. Free listings are not null: they have amount 0.0 and is_free: true.

Why does a direct item URL return more fields than a search result?
Direct item URLs always fetch the full listing page. Search results use summary mode unless Fetch detailed information is enabled.

Why did a search return zero listings?
The search may have no matching inventory for the selected filters, or Facebook returned no results for that query and location. Try relaxing filters or a different location.

Will the same listing appear twice?
Yes, if you use multiple searches that overlap and deduplication is off. Enable Deduplicate listings across searches or deduplicate on id in your export.

Can I scrape a single listing by URL?
Yes — add the /marketplace/item/<id> link under Direct item URLs.

What can I type as Location?
A city name (Toronto, Austin, Texas), a postal code, or the city part of a Marketplace link (montreal in facebook.com/marketplace/montreal/search, or a numeric location ID).

Which makes are supported for vehicle searches?
The input form includes a full dropdown of manufacturers — from Acura and Audi to Tesla, Rivian, Lucid, and Volvo. Choose All to search every make in a location.


Support

For Actor-specific issues, use the Issues tab on the Apify store listing or contact the publisher through Apify.

For platform questions (runs, billing, API, schedules), see Apify documentation and Apify support.