Skip to main content
GET
Marketplace Search
Search Facebook Marketplace by keyword in one location. Returns structured listings with price and currency, photos, place, condition subtitles, delivery types, sold/pending state and the seller actor. Marketplace has no public Facebook API — this endpoint is the only structured access to that inventory. Credits: 5

Authorization

string
required
Your ScrapeBadger API key.

Query Parameters

string
required
Search keywords, e.g. macbook pro.
string
default:"nyc"
A Facebook Marketplace location slug (nyc, la, london, newcastleupontyne) or a numeric Facebook place id (107486895947382). Human-readable names such as Durham, UK are not accepted and return a 400 — see Location targeting below.
integer
Search radius around the location, 1500. Facebook’s own unit: kilometres in metric locales, miles in the US. Defaults to Facebook’s 65 km / 40 mi.
integer
Minimum price, in the location’s currency.
integer
Maximum price, in the location’s currency.
integer
Only listings posted within the last N days, 130.
string
One of best_match, price_ascend, price_descend, distance_ascend, creation_time_descend.
string
Comma-separated. One or more of new, used_like_new, used_good, used_fair.
string
One of local_pick_up, shipping.
string
Pagination cursor — the end_cursor from a previous response.

Response

MarketplaceListing[]
Each MarketplaceListing includes id, title, custom_title, url, price_formatted, price_amount, amount_with_offset, strikethrough_price, min_price, max_price, currency, primary_photo, photos[], creation_time_utc, created_at, location_text, city, state, city_page_id, latitude, longitude, category_id, subtitles[], delivery_types[], attributes, is_sold, is_pending, is_live, is_hidden, seller and description.city_page_id is the canonical Facebook place id for the listing’s city, and can be passed straight back as a location.Facebook does not put coordinates on feed cards: latitude and longitude are null here for every listing, and the listing’s place is carried by location_text, city, state and city_page_id. Coordinates come from /marketplace/item/{item_id}.
integer
Number of listings in this page.
string
Pass as after for the next page.
boolean
Whether more listings are reachable.
string
The query that was searched.
string
The location value you sent.
ResolvedLocation
The location Facebook actually searched: slug (the slug or place id it resolved to), latitude, longitude and radius. Check these against your own geography before ingesting the listings.

Location targeting

Facebook does not error on an unknown {location} — it silently searches a different place and returns HTTP 200. Which place depends on the exit the request went out on, so the same bad input can come back as San Francisco, Maryland or Delaware inventory. This endpoint compares the location Facebook echoes back against the one you asked for and returns a 400 invalid_location whenever they differ, so you are never billed for wrong-country inventory:
400 invalid_location
Only places Facebook itself has minted a slug for resolve: london and newcastleupontyne do, durham and sunderland do not. To cover a town with no slug, search a nearby location that does have one and read city_page_id off the listings — those numeric place ids are valid location values:
A location Facebook recognises echoes back verbatim in resolved_location.slug (newcastleupontynenewcastleupontyne), so you can also assert the coordinates fall inside your target geography before ingesting.
Feed cards are truncated by Facebook: description, the full photos[] gallery and attributes are reliably populated only on /marketplace/item/{item_id}.

Example

Response
Combine days_since_listed=1 with sort_by=creation_time_descend to poll a location for fresh inventory without re-reading the whole feed.