Facebook Marketplace Scraper API
Our Facebook Marketplace scraper targets a public item listing and returns structured JSON: the title, price and currency, location, description, images, seller, and condition. It reads the listing entity and og:product tags in the item page. Facebook requires a session for essentially all Marketplace item detail, so the endpoint is honest about when a listing renders and when it does not.
Getting Facebook Marketplace data is harder than it looks
Facebook Marketplace requires a session for essentially all item detail: logged out, an item URL returns a bare app shell with no listing data, and there is no official API that exposes Marketplace listings at all. So a populated listing generally needs an authenticated session, not a plain request.
Hit the Facebook Marketplace Scraper API with one request
curl "https://api.facebookscraperapi.com/api/v1/facebook/marketplace?url=https://www.facebook.com/marketplace/item/1234567890&api_key=$API_KEY" import requests
BASE = "https://api.facebookscraperapi.com"
API_KEY = "YOUR_API_KEY"
# Pass a Marketplace item URL or id. Response follows the documented listing shape.
data = requests.get(
f"{BASE}/api/v1/facebook/marketplace",
params={
"url": "https://www.facebook.com/marketplace/item/1234567890",
"api_key": API_KEY,
},
timeout=30,
).json()
print(data["title"], "-", data["price"], data["currency"])
print("location:", data["location"])
print("condition:", data["condition"]) Parameters
| Parameter | Required | Default | Notes |
|---|---|---|---|
url | optional | - | A full facebook.com/marketplace/item/ |
id | optional | - | The Marketplace item id (the numeric segment after /marketplace/item/). One of url or id is required. |
country | optional | - | Optional two-letter country code to fetch the listing as seen from that region. |
api_key | required | - | Your API key, passed as a query parameter. Get one free at signup. |
The Facebook Marketplace Scraper API output schema
{
"id": "1234567890",
"url": "https://www.facebook.com/marketplace/item/1234567890/",
"title": "Mid-century oak dining table",
"price": 240,
"currency": "USD",
"description": "Solid oak dining table, seats six. Light wear on the surface, structurally solid.",
"location": "Austin, TX",
"condition": "Used - Good",
"seller": "Jordan M.",
"images": [
"https://scontent.xx.fbcdn.net/v/t45.5328-4/example_listing_1.jpg",
"https://scontent.xx.fbcdn.net/v/t45.5328-4/example_listing_2.jpg"
],
"thumbnail": "https://scontent.xx.fbcdn.net/v/t45.5328-4/example_listing_1.jpg",
"source": "facebook",
"data_source": "relay-entity"
} | Field | Type | Description |
|---|---|---|
id | string | The Marketplace item id from the URL. |
url | string | The canonical item URL. |
title | string | The listing title from the listing entity, product JSON-LD, or og:title. |
price | integer | The listing price as a number, parsed from the listing price object or product offer. |
currency | string | The price currency, defaulting to USD when not otherwise specified. |
description | string | The listing description from the entity, product JSON-LD, or og:description. |
location | string | The listing location text when the entity exposes it. |
condition | string | The item condition when present, e.g. Used - Good. |
seller | string | The seller name when the listing entity exposes it. |
images | array | Listing photo URLs, the primary plus any additional photos, de-duplicated. |
data_source | string | relay-entity, json-ld, or opengraph, showing where the listing fields were read from. |
Build with Facebook data
Price research
Listing archives
Inventory monitoring
Image collection
Location and condition analysis
Session-based pipelines
Why teams ship on our Facebook Marketplace Scraper API
We force the request onto a US residential exit and parse the title, price, location, condition, seller, and images from the listing entity and og:product tags. Marketplace item detail is login-gated logged-out, so when only a bare shell or the wall is served the endpoint reports a clear diagnostic instead of a fabricated listing, and it rejects id-only shells so you never get a false row.
URL or id input
Documented listing shape
Price parsing
Residential routing built in
Shell and wall rejection
Data-source flag
How the Facebook Marketplace Scraper API compares
| Our API | DIY (requests / headless) | Official API | |
|---|---|---|---|
| Read a listing item | When it renders, else honest diagnostic | Usually a bare CSR shell | No Marketplace API exists |
| Setup | API key only | Residential proxies, headless browser, parsers | Not available |
| Price and condition | Returned when the listing renders | You parse it yourself | Not exposed |
| Anti-bot and proxies | Built in, US residential | You build and maintain it | Not applicable |
| Logged-out reality | Rejects shell and wall honestly | Shell with no clear signal | Not applicable |
| Output | Flat, validated JSON | Whatever you parse | Not applicable |
Pricing built for scale
| Plan | Price | Best for |
|---|---|---|
| Free | 1,000 requests | Testing and small jobs |
| Pro | $0.60 / 1k | Production workloads |
| Pay-as-you-go | $0.90 / 1k | Spiky or one-off volume |
Median response 2.6s. You only pay for successful requests.
FAQ
A Facebook Marketplace scraper reads a public item listing and returns it in a structured format. Our Facebook Marketplace scraper API takes an item URL or id and, when the listing renders, returns the title, price, currency, location, description, images, seller, and condition as JSON. The extractor reads the listing entity, product JSON-LD, and og:product tags.
Usually not, and the endpoint is honest about it. Facebook requires a session for essentially all Marketplace item detail, so a logged-out item URL returns a bare app shell with no listing data. When that happens, the endpoint returns a clear diagnostic and rejects the shell rather than emitting a false row. For populated listing data, run the endpoint with an authenticated session.
When an item page renders, you get the item id, canonical URL, title, price as a number, currency, description, location, condition, seller name, and an array of listing photo URLs, plus a data_source flag showing whether the fields came from the listing entity, product JSON-LD, or og tags. Fields that the page does not expose come back null.
An item id parsed from the /marketplace/item/
No. Facebook does not offer a public API that exposes Marketplace listings, which is why there is no official-API column of note for this data. This endpoint reads the public item page when it renders and reports honestly when the login gate blocks it. You authenticate with a single facebookscraperapi key, and the free tier includes 1,000 requests.
Treat it as a listing endpoint that returns the documented shape when an item renders and reports a classifiable diagnostic when Facebook walls or shells the page logged-out. Teams that need consistent listing data run it with an authenticated session, and use the honest failure signal to detect and retry blocked captures instead of accepting empty rows.