Facebook Marketplace Scraper avatar

Facebook Marketplace Scraper

Pricing

from $1.33 / 1,000 results

Go to Apify Store
Facebook Marketplace Scraper

Facebook Marketplace Scraper

Scrape Facebook Marketplace listings by search term or category, in any city — title, price, location, photo, delivery options and sold status. No login, cookies or API key.

Pricing

from $1.33 / 1,000 results

Rating

0.0

(0)

Developer

Farhan Febrian Nauval

Farhan Febrian Nauval

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Categories

Share

Scrape Facebook Marketplace listings by search term or category, in any city — title, price, location, photo, delivery options and sold status. No login, no cookies, no API key.

What you get

FieldMeaning
title, customTitleListing title as shown, and the seller's raw text
subtitleThe grey detail line — mileage on a car, beds on a rental
priceFormatted, priceAmountAU$450 and 450.00 — display and numeric
strikethroughPriceFormattedOriginal price, when the seller has cut it
city, state, locationDisplayWhere the item is
photoUrlPrimary listing photo
hasVideo, videoIdWhether the listing has a video, and its id
createdAtWhen it was listed, as UTC
isSold, isLive, isPendingListing state
deliveryTypese.g. ["IN_PERSON"]
listingUrlDirect link to the listing

Input

{
"searchQueries": ["mountain bike"],
"categories": ["vehicles"],
"city": "sydney",
"sortBy": "newest"
}

Search terms and categories can be used together or separately; each becomes its own set of rows.

Things worth knowing

The city slug sets the region and the currency. sydney returns AUD and Australian suburbs, london returns GBP and UK towns, jakarta returns IDR. Use the slug Facebook itself uses in the URL.

An unrecognised city or category is silently redirected. Facebook answers a bogus city with a 200 and a full page of listings — from a completely different feed. Nothing in the response says the location was ignored. This actor compares where it landed against what you asked for and reports a redirected error instead of handing you plausible-looking data about the wrong place.

One page is all that is public. A feed holds roughly 24–32 listings. The page advertises more through has_next_page and a cursor, but spending that cursor requires a signed-in session, so maxItemsPerInput above ~30 will not yield more. This is a hard limit of the logged-out surface, not a setting.

The seller is never disclosed. marketplace_listing_seller is present on every listing and null on every one of them. Seller name, profile and rating are not available without logging in, so anything that depends on seller identity — separating dealers from private sellers, for instance — cannot be built on this data. sellerName is included as an explicit null rather than omitted, so the absence is visible.

No video URL exists here either. A listing with a video exposes only its id, so the actor reports hasVideo and videoId rather than a playable link it cannot actually produce.

Search occasionally bounces to the login page. Facebook sometimes answers a search URL with a redirect to /login — intermittently, not consistently: the same query usually succeeds on the next run, and category browsing is affected less often than search. The actor reports this as login_walled with the URL it landed on, rather than silently returning nothing.

Use a residential proxy. Facebook is selective about client IPs; the input defaults to Apify's residential group.

Failure reporting

Every input produces at least one row. Failures carry _error and _errorDetail:

_errorMeaning
no_listingsThe feed rendered but matched nothing
redirectedFacebook sent the request to a different feed — check the city or category slug
login_walledFacebook bounced the route to its login page — intermittent, usually clears on a retry
network_errorThe request never reached Facebook
blockedA response arrived but was unusable

If every feed fails, the run aborts rather than finishing with an empty dataset.