Facebook Marketplace Listing Scraper avatar

Facebook Marketplace Listing Scraper

Pricing

from $0.90 / 1,000 listings

Go to Apify Store
Facebook Marketplace Listing Scraper

Facebook Marketplace Listing Scraper

Collect public Facebook Marketplace listings from search, browse, location, or listing URLs. Get the ID, URL, title, price, currency, location, availability, main image, and collection time for each saved listing. No Facebook login or API key is required.

Pricing

from $0.90 / 1,000 listings

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

🛒 Find Facebook Marketplace Listings

For resellers, market researchers, and developers, this Actor collects public Facebook Marketplace listings and saves structured rows with listing IDs, source URLs, titles, prices, currencies, locations, availability, primary images, and collection times. Use the rows to compare local offers, build product lists, or review marketplace data without copying it by hand.

Use it to:

📋 Marketplace Listing Rows

Each saved row represents the first eligible occurrence of one public Marketplace listing. If the same source listing appears again through another submitted value, later matches are ignored. The row keeps the source URL, title, asking price, currency, displayed location, availability, primary image URL, and collection time.

Choose one way to find listings for each run:

Marketplace search URLs

Add one or more public search or browse URLs. Filters in submitted URLs stay active.

Keyword and location

Enter product words and a city or other location.

Coordinates and radius

Enter a center latitude, longitude, and search radius in kilometers.

Direct listing lookup

Add one or more public Marketplace listing URLs when you already know the listings to collect.

Use one mode per run. Fields for other modes are ignored. You do not need a Facebook login or API key. Set Maximum listings when you want a cap. Leave it empty to return all available results until the source is exhausted. Facebook may return fewer listings.

⚙️ Input

Input fields

FieldTypeWhat it does
findBystringChooses searchUrls, keywordLocation, coordinatesRadius, or directListingLookup. Use one mode per run.
searchUrlsarray of objectsAdds one or more public Marketplace search or browse URL objects. Filters in each URL stay active. Required for this mode.
keywordstringSets product words such as mountain bike. Required with keywordLocation.
locationstringSets a city or other place such as Austin, Texas. Required with keywordLocation.
latitudenumberSets the center latitude from -90 to 90. Required with coordinatesRadius.
longitudenumberSets the center longitude from -180 to 180. Required with coordinatesRadius.
radiusKmnumberSets a positive search radius in kilometers. Required with coordinatesRadius.
listingUrlsarray of objectsAdds public listing URL objects for direct lookup. Required for this mode.
includeRichDetailsbooleanRequests full descriptions, extra public media, condition and other attributes, public seller details, delivery options, precise coordinates, and category details such as vehicle specifications when available.
maxItemsintegerSets the listing cap. Leave it empty to return all available results until the source is exhausted. Facebook may return fewer listings.

Example input

This example is copied from the public input of the successful current-beta default-input run:

{
"findBy": "searchUrls",
"searchUrls": [
{
"url": "https://www.facebook.com/marketplace/108479165840750/search/?query=bike"
}
],
"includeRichDetails": false,
"maxItems": 25
}

🧾 Output

Run output

FieldTypeWhat it does
resultsstringLinks to the collected listing rows in the default dataset overview.

Listing row fields

The dataset has one listing-row shape for all four input modes. The source may hide or remove listings, so a run can return fewer rows than requested.

FieldTypeWhat it does
listingIdstringGives the public ID of the Marketplace listing.
listingUrlstringLinks to the public Facebook Marketplace listing.
titlestringGives the title shown on the listing.
pricenumberGives the asking price shown on the listing.
currencystringGives the currency shown for the asking price.
locationstringGives the location shown on the listing.
availabilityStatusstringGives the availability state shown on the listing.
primaryImageUrlstringLinks to the main image shown for the listing.
collectedAtstringGives the time when the Actor collected the listing, in date-time format.

Example listing row

This unshortened row is copied from the successful current-beta search run:

{
"listingId": "1396178905973417",
"listingUrl": "https://www.facebook.com/marketplace/item/1396178905973417/",
"title": "Schwinn Hurricane eBike",
"price": 500,
"currency": "USD",
"location": "South San Francisco, California",
"availabilityStatus": "Available",
"primaryImageUrl": "https://scontent.fmvd4-1.fna.fbcdn.net/v/t39.84726-6/787045080_1848438953195675_3029700478648122674_n.jpg?stp=c148.0.260.260a_dst-jpg_p261x260_tt6&_nc_cat=105&_nc_map=urlgen_bucketless&ccb=1-7&_nc_sid=92e707&_nc_ohc=Hm_KiXY4CggQ7kNvwF_d7sf&_nc_oc=Adp0kLvgFNbTVHbU7iUqga42BPBbs-IJw9Nxv2vNdaz9k8cIPtn8bPVgZcaXBBaGR5U&_nc_zt=14&_nc_ht=scontent.fmvd4-1.fna&_nc_gid=rdgJurxo4InuBOzDleu-wA&_nc_ss=73180&oh=00_AQImnRkn5eQ7okXqYCEvUEBCHLwHuSvvZr6XAXqF7Kw4DA&oe=6A995C82",
"collectedAt": "2026-08-30T00:12:31.000Z"
}

💳 Pricing

How charges work

This Actor uses pay-per-event pricing. One Listing event is charged for each public listing saved to the dataset. The current price and tier details appear in the Store pricing panel.

🔌 Integrations

Use the Apify API to start runs and read the default dataset. You can also schedule runs, export dataset rows, or send finished-run data to webhooks.

❓ FAQ

Do I need a Facebook login or API key?

No. The Actor collects publicly visible Marketplace listings without a Facebook login or API key.

Why did my run return fewer listings than maxItems?

maxItems is a cap, not a promise. Facebook may hide, remove, or block public listings, so the source may return fewer rows.

Can I use a search URL with filters?

Yes. Filters already encoded in submitted public search or browse URLs stay active. You can add multiple URLs for the same kind of search, but keep independent keyword, location, or filter combinations in separate runs.

Can I search by a keyword and location?

Yes. Choose Keyword and location, then enter both fields.

Can I search around coordinates?

Yes. Choose Coordinates and radius and enter latitude, longitude, and a positive radius in kilometers.

Can I look up known listings?

Yes. Choose Direct listing lookup and add public Marketplace listing URLs.

What does includeRichDetails do?

It requests extra public details such as descriptions, media, attributes, seller details, delivery options, coordinates, and category details when available.

Why is the same listing saved only once?

The Actor saves the first eligible occurrence and ignores later matches for the same source listing. The saved row reflects the first match, not a combination of later matches.

Is the data guaranteed complete or fresh?

No. Results cover the public listings Facebook exposes during the run, and collectedAt tells you when each row was collected. The Actor does not promise a fixed count or future freshness.

📝 Changelog

0.0: Initial release

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré