# Facebook Marketplace Scraper - Any US ZIP Code (`soldgraph/facebook-marketplace-scraper`) Actor

Facebook Marketplace listings near any US ZIP code: price, city, distance, delivery and photo, with a thorough mode for up to 4x results. Full listing details too. Pay per result, no login.

- **URL**: https://apify.com/soldgraph/facebook-marketplace-scraper.md
- **Developed by:** [Soldgraph](https://apify.com/soldgraph) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Facebook Marketplace Scraper - Any US ZIP Code

Search **Facebook Marketplace** listings around any US ZIP code by keyword. Every row has the price, city, approximate distance, listing date, delivery options, a link and a photo. Switch to **details mode** to get the full description, condition, coordinates and all photos for any listing.

No Facebook login, cookies or browser setup needed.

### Why this actor

- **Any ZIP code in the US.** Put in ZIP codes, not Facebook city URLs. The actor picks the nearest Facebook city and keeps your radius.
- **Thorough mode.** Facebook shows only about 24 listings per search. Thorough mode runs each search in all four sort orders and keeps each listing once, for up to about 4 times as many results. You only pay for unique listings.
- **Clean filters.** Radius, price range, condition, delivery (local pickup or shipping) and listed within 1, 7 or 30 days.

### What you can do with it

- **Find deals** to flip before anyone else, across several cities at once
- **Price local items** from what similar listings ask nearby
- **Track a market**: furniture, bikes, tools, electronics, cars
- **Build alerts** by scheduling the actor and comparing runs

### How to use it

1. Add keywords and US ZIP codes. Every keyword is searched around every ZIP code.
2. Optional: radius, sort, price range, condition, delivery, listing age, thorough mode.
3. Run it and export as JSON, CSV or Excel, or connect it to Make, Zapier or n8n.

For full details, choose **Full details for listing URLs or IDs** and paste `facebook.com/marketplace/item/...` links or IDs from a search.

### Input example

```json
{ "queries": ["mountain bike"], "zipCodes": ["28202"], "radius": 25, "thorough": true }
```

### Output example

```json
{
  "query": "mountain bike",
  "zip": "28202",
  "search_city": "Charlotte",
  "title": "Mountain bike",
  "price": 25,
  "currency": "USD",
  "city": "Belmont",
  "state": "NC",
  "approx_distance_miles": 11.3,
  "listed_at": "2026-09-27T12:26:17+00:00",
  "link": "https://www.facebook.com/marketplace/item/..."
}
```

### Pricing

- **Search results: $3.00 per 1,000 listings**
- **Listing details: $8.00 per 1,000 listings**

Set a maximum cost per run in Apify and the actor stops there.

### FAQ

**Can I get sold prices?** No. Facebook does not show sold listings publicly. You get active listings and their asking prices.

**Why fewer listings than the app shows?** Facebook serves one page of about 24 listings per search to visitors who are not logged in. Use thorough mode, several ZIP codes, or narrower price ranges to cover more.

**What do the fields mean?** See the [field reference](https://soldgraph.com/docs/api/facebook-listings).

# Actor input Schema

## `mode` (type: `string`):

Search returns listings with price, city and photo. Details adds the description, condition, coordinates, delivery options and all photos for each listing you give.

## `queries` (type: `array`):

One search per line.

## `zipCodes` (type: `array`):

Five-digit US ZIP codes. Every keyword is searched around every ZIP code.

## `radius` (type: `integer`):

Optional, 1 to 100. Facebook's default is about 40 miles.

## `sort` (type: `string`):

Optional. Order of results.

## `thorough` (type: `boolean`):

Facebook shows about 24 listings per search. This runs each search in all four sort orders and keeps each listing once, for up to about 4 times as many results. You only pay for unique listings.

## `minPrice` (type: `integer`):

Optional. Only listings at or above this price.

## `maxPrice` (type: `integer`):

Optional. Only listings at or below this price.

## `condition` (type: `string`):

Optional. Only listings in this condition.

## `delivery` (type: `string`):

Optional. Local pickup or shipped listings only.

## `daysSinceListed` (type: `string`):

Optional. Only listings posted in this window.

## `listings` (type: `array`):

For details mode: facebook.com/marketplace/item/... URLs or listing IDs from a search, one per line.

## Actor input object example

```json
{
  "mode": "search",
  "queries": [
    "mountain bike"
  ],
  "zipCodes": [
    "28202"
  ],
  "sort": "best_match",
  "thorough": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": [
        "mountain bike"
    ],
    "zipCodes": [
        "28202"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("soldgraph/facebook-marketplace-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "queries": ["mountain bike"],
    "zipCodes": ["28202"],
}

# Run the Actor and wait for it to finish
run = client.actor("soldgraph/facebook-marketplace-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": [
    "mountain bike"
  ],
  "zipCodes": [
    "28202"
  ]
}' |
apify call soldgraph/facebook-marketplace-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,soldgraph/facebook-marketplace-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/sTCcrvdGMk5dYbDHG/builds/ahxwFreefefBTQlsY/openapi.json
