Facebook Marketplace Scraper

Extract public Facebook Marketplace listings from search, city, and category URLs with prices, images, locations, and listing IDs.

Data fields

FieldTypeDescription
idstringFacebook Marketplace listing identifier.
listingUrlstringCanonical Facebook Marketplace listing URL.
sourceUrlstringInput URL where this listing was found.
titlestring | nullListing title when available.
priceTextstring | nullPrice text as displayed by Facebook.
priceAmountnumber | nullParsed numeric price amount when available.
currencystring | nullParsed ISO-like currency code when available.
locationTextstring | nullDisplayed listing location text.

Input preview

startUrlsFacebook Marketplace URLs *
maxItemsMaximum listings
proxyConfigurationProxy configuration

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Scrape public Facebook Marketplace listings from search, city, and category URLs. Export listing IDs, URLs, titles, prices, locations, and images to CSV, JSON, Excel, datasets, API workflows, and AI agents.

Use this Actor to monitor local resale inventory, compare asking prices, collect marketplace leads, or feed internal deal-tracking workflows without managing browser automation yourself.

At a glance

  • Primary job: Extract public Facebook Marketplace listing rows from Marketplace URLs.
  • Input: Paste one or more public Marketplace search, city, category, or listing URLs and set a listing limit.
  • Output: One dataset row per listing with URL, ID, title, price, location, image, source URL, and scrape timestamp.
  • Best for: Local inventory monitoring, resale research, competitive pricing, rental/property checks, and automation.

Who is it for?

  • Resellers and buyers tracking local asking prices and newly listed items.
  • Market researchers collecting inventory samples across cities or categories.
  • Real estate and rental teams monitoring public Marketplace property listings.
  • Automation teams feeding public listing rows into alerts, CRMs, spreadsheets, or dashboards.

Input recipes

Before public Apify example tasks exist, use these input recipes directly.

Used guitars in San Francisco

{
  "startUrls": [
    { "url": "https://www.facebook.com/marketplace/sanfrancisco/search/?query=guitar" }
  ],
  "maxItems": 25,
  "proxyConfiguration": { "useApifyProxy": true, "groups": ["RESIDENTIAL"] }
}

Laptops in New York City

{
  "startUrls": [
    { "url": "https://www.facebook.com/marketplace/nyc/search/?query=laptop" }
  ],
  "maxItems": 25,
  "proxyConfiguration": { "useApifyProxy": true, "groups": ["RESIDENTIAL"] }
}

What data can you extract?

Field Description
id Facebook Marketplace listing ID.
listingUrl Canonical Marketplace listing URL.
sourceUrl Input URL where the listing was found.
title Listing title when visible.
priceText Displayed price text.
priceAmount Parsed numeric price when possible.
currency Parsed currency when possible.
locationText Displayed listing location.
city, state Parsed city and state/region when present.
primaryImageUrl, imageUrls Public listing image URLs when available.
sellerName, sellerId Public seller fields only when exposed in logged-out data.
description, attributes, createdAt Detail fields reserved for public detail extraction.
detailStatus Status of optional detail extraction.
scrapedAt ISO timestamp when the row was saved.

Example input

{
  "startUrls": [
    { "url": "https://www.facebook.com/marketplace/sanfrancisco/search/?query=guitar" }
  ],
  "maxItems": 25,
  "proxyConfiguration": { "useApifyProxy": true, "groups": ["RESIDENTIAL"] }
}

Example output

{
  "id": "1382249123799344",
  "listingUrl": "https://www.facebook.com/marketplace/item/1382249123799344/",
  "sourceUrl": "https://www.facebook.com/marketplace/sanfrancisco/search/?query=guitar",
  "title": "Guitar San Francisco, CA",
  "priceText": "$80",
  "priceAmount": 80,
  "currency": "USD",
  "locationText": null,
  "city": null,
  "state": null,
  "primaryImageUrl": "https://scontent.example/listing.jpg",
  "imageUrls": ["https://scontent.example/listing.jpg"],
  "deliveryTypes": [],
  "isLive": null,
  "isPending": null,
  "isSold": null,
  "sellerName": null,
  "sellerId": null,
  "description": null,
  "attributes": {},
  "createdAt": null,
  "detailStatus": "not_requested",
  "scrapedAt": "2026-07-16T09:12:17.832Z"
}

Tips for best results

  • Start small: Use maxItems: 25 until the route and output match your use case.
  • Use public Marketplace URLs: The Actor does not use cookies, accounts, private messages, saved listings, or seller contact channels.
  • Choose focused searches: Specific city and query URLs produce cleaner monitoring datasets than broad Marketplace home pages.
  • Schedule repeat runs: Compare datasets over time to track price changes and new local inventory.

API usage

Node.js:

import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor("fetch_cat/facebook-marketplace-scraper").call({
  startUrls: [{ url: "https://www.facebook.com/marketplace/sanfrancisco/search/?query=guitar" }],
  maxItems: 25
});
console.log(run.defaultDatasetId);

Python:

from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("fetch_cat/facebook-marketplace-scraper").call(run_input={
    "startUrls": [{ "url": "https://www.facebook.com/marketplace/nyc/search/?query=laptop" }],
    "maxItems": 25,
})
print(run["defaultDatasetId"])

cURL:

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~facebook-marketplace-scraper/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"startUrls":[{"url":"https://www.facebook.com/marketplace/sanfrancisco/search/?query=guitar"}],"maxItems":25}'

MCP and AI agents

Use this Actor from MCP-compatible tools through the official Apify MCP Server.

claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/facebook-marketplace-scraper"
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=fetch_cat/facebook-marketplace-scraper"
    }
  }
}

Example prompt: "Run Facebook Marketplace Scraper for used guitars in San Francisco and summarize the listing prices."

Limits and caveats

  • Public data only: This Actor does not log in and does not collect private seller contact data or messages.
  • Availability varies: Facebook can hide, remove, or change listing data at any time.
  • Anti-bot sensitivity: Residential proxy is recommended. Very large or frequent runs may be throttled.
  • Optional fields: Seller, status, and detail fields remain empty when not publicly exposed.

Legality and responsible use

Process only data that you are allowed to access. Follow website terms, Apify's terms, and applicable laws.

Support

Open an issue from the Actor page if a run fails or output looks wrong. Include the run ID or run URL, input JSON, expected output, actual output, and one reproducible public URL.

Common questions

Questions and answers reused from the canonical actor README.

Can I export results?

Yes. Apify datasets support JSON, CSV, Excel, XML, RSS, and API access.

Does this Actor need my Facebook account?

No. V1 is limited to public logged-out Marketplace data and does not accept cookies or credentials.

Why are some fields empty?

Some Marketplace fields are not exposed publicly on every route. The Actor leaves unavailable fields empty instead of guessing.