# Facebook Marketplace Scraper (`data_wiki/facebook-marketplace-scraper`) Actor

Scrape public Facebook Marketplace listings from keywords, search, category or listing links. No login or cookies. Get prices, photos, locations, condition, seller info, vehicle and property specs. Bulk runs and filters. JSON for price monitoring and resale leads.

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

## Pricing

from $1.40 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

### 🚀 What is Facebook Marketplace Scraper?

**Facebook Marketplace Scraper** is a Facebook Marketplace scraper that turns public Marketplace pages into clean rows of prices, photos, places, conditions and sellers. Just **paste Marketplace search links, category links, single listing links or plain keywords** and download the listings as JSON, CSV or Excel, with no Facebook account and no cookies. It works as a Facebook Marketplace listings scraper for one search or for hundreds of inputs in a single run. It is also a Facebook Marketplace extractor you can call from code through the Apify API.

- 🛒 **FB Marketplace scraper for bulk work:** add many links and keywords at once and get one row per listing.
- 🔓 **Facebook Marketplace scraper no login required:** no Facebook account and no cookies are needed.
- ⚡ **Live results:** every listing is saved the moment it is read, so rows show up in the Output tab while the run is still going.
- 🚗 **Vehicles and homes included:** year, make, mileage, bedrooms and bathrooms are filled in when the listing page is read.

> 💡 **Also scraping other Facebook pages?** Try the [Facebook group scraper](https://apify.com/data_wiki/facebook-group-scraper) for public groups.

### ✨ What can this Facebook Marketplace Scraper do?

- 🔎 **Search scraper:** acts as a Facebook Marketplace search scraper for keywords and Marketplace search links, in any city you name.
- 🗂️ **Category and single listing links:** read a whole category, or one listing by link or by its id.
- 🧾 **Listing details:** as a Facebook Marketplace listing details scraper, it can open each listing for the description, all photos, condition, category, seller rating and join date, plus vehicle and property specs.
- 🎯 **Filters:** minimum and maximum price, item condition, listed within 24 hours, 7 days or 30 days, sort order, search radius, delivery method and availability (available or sold).
- 🚗 **Vehicle data:** works as a Facebook Marketplace vehicle scraper, with year, make, model, trim, mileage, transmission, colors, owners and fuel economy where the listing shows them.
- 📥 **Export Facebook Marketplace listings** as **JSON, CSV, Excel, HTML or XML** from the Output tab.
- 🔌 **Use the API**, schedules, webhooks and **integrations with other apps** such as n8n, Make, Zapier and Google Sheets.

### 📊 What data can this Facebook Marketplace Scraper extract?

Each run fills the main table with up to 71 fields per listing. The table below groups them.

| | | |
|---|---|---|
| 📝 Listing id, link and title | 💰 Price, numeric amount, currency, original price, free flag | 📍 City, state, postal code, location text, coordinates |
| 🏷️ Condition, category name and id, subtitle, attributes | 🖼️ Main photo, all photos, photo count, videos | 🚚 Delivery types, shipping offered and shipping price |
| ⏱️ Status, live, sold, pending, listing type, quantity | 📅 Listed at, days listed, scraped at | 🚗 Vehicle year, make, model, trim, mileage, colors, owners |
| 🏠 Property type, bedrooms, bathrooms | 👤 Seller name, ids, profile link, picture, join date | 📊 Seller rating, rating count, verified, badge, business flag |
| 🔗 Related searches and hashtags | 🔎 Search keyword, search location, position | 🧭 Source link and a flag that says if details were read |

Next to the main table, the Actor writes four extra tables: **Sellers** (Facebook Marketplace seller data, one row per listing seller), **Photos and videos** (one row per file), **Attributes** (one row per listing attribute) and **Inputs** (one row per link or keyword you gave, including ones that failed). A **SUMMARY** record holds the run totals.

> ⚠️ **Note:** the description, all photos, condition, category, coordinates, listing attributes, seller rating and join date, and the vehicle and property specs are only filled when **Include listing details** is on. Any field Marketplace does not show for a listing stays `null`.

#### Data Facebook Marketplace Scraper can't extract

- 🔒 Anything behind a login: private profiles, messages and saved items are not read.
- 🔔 It does not send Facebook Marketplace real time notifications by itself. You can schedule runs and connect them to other apps with webhooks and integrations.
- 🏘️ Real-estate category links are not supported; use a keyword search such as `apartment` instead.
- 💬 For comments on Facebook posts, use the [Facebook comment scraper](https://apify.com/data_wiki/facebook-comment-scraper).

### 💰 How much does it cost to scrape Facebook Marketplace?

Facebook Marketplace Scraper uses **pay-per-event pricing**: you pay for each listing the Actor saves, plus a very small start fee, with no subscription to the Actor.

#### Base pricing

- **Results** (`main_result`): charged once for every listing saved to the main table.
- **Actor start** (`apify-actor-start`): $0.00005 per run.

The four extra tables (sellers, photos and videos, attributes, inputs) are not charged. Apify platform usage (compute) is billed on top of the events above.

#### Pricing by plan tier

| Plan tier | Price per result | Price per 1,000 results |
|---|---|---|
| 🆓 Free | $0.002 | 1,000 x $0.002 = $2.00 |
| 🥉 Bronze | $0.0018 | 1,000 x $0.0018 = $1.80 |
| 🥈 Silver | $0.0016 | 1,000 x $0.0016 = $1.60 |
| 🥇 Gold and above | $0.0014 | 1,000 x $0.0014 = $1.40 |

Example: 500 listings on the Free tier cost 500 x $0.002 = $1.00 plus the $0.00005 start fee, so $1.00005. The same 500 listings on the Gold tier cost 500 x $0.0014 = $0.70 plus the start fee.

You can set a maximum spend for a run. When the limit is reached the run stops cleanly and keeps every listing already saved. Prices were read from the Actor's live pricing on 2026-10-18 and can change.

#### Why pay-per-event?

- **Transparent:** you pay for the listings you receive.
- **Predictable:** you can estimate the cost before you start.
- **No idle charges:** waiting time is not billed per event.

### 🛠️ How do I use Facebook Marketplace Scraper to scrape Facebook Marketplace?

Here is how to web scrape Facebook Marketplace in six steps:

1. [Create a free Apify account](https://console.apify.com/sign-up).
2. Open **Facebook Marketplace Scraper** in the Apify Store.
3. Add Marketplace links or keywords to **Marketplace links or keywords**, one per line.
4. Optionally set a location, the maximum listings and filters.
5. Click **Start** and watch the log: each saved listing is printed with its id, price and photo count.
6. Open the **Output** tab, switch between the table views and download the data as JSON, CSV or Excel.

### ⬇️ Input

Only **Marketplace links or keywords** (`urls`) is required. Everything else is optional. Bulk input is supported, so you can mix search links, category links, listing links, listing ids and keywords in one run.

Here is a simple example input (two inputs, newest first, at most 20 listings each, with listing details):

```json
{
    "urls": [
        "https://www.facebook.com/marketplace/nyc/search?query=bike",
        "iphone 13"
    ],
    "location": "",
    "resultsLimit": 20,
    "includeListingDetails": true,
    "minPrice": 20,
    "sortBy": "newest",
    "proxyConfiguration": {
        "useApifyProxy": false
    }
}
```

Open the **Input** tab for a full explanation of every field.

#### Marketplace links or keywords

Use search links such as `.../marketplace/nyc/search?query=bike`, category links such as `.../marketplace/category/vehicles`, single listing links (`.../marketplace/item/ID`), listing ids, or keywords such as `iphone 13`. A link that is not a Marketplace link is marked as failed in the Inputs table while the other inputs continue. Good: one clear keyword per line. Bad: a link to a Facebook profile or group.

#### Location

Give a city name that Marketplace uses (`nyc`, `london`), a place such as `Austin, TX`, or coordinates as `lat,lon`. A location you enter applies to keywords, search links and category links. Leave it empty to use the city inside each link, or New York for keywords. If Marketplace does not recognise the city, the Actor warns you and the rows are for a default area.

#### Maximum listings

`resultsLimit` is counted for each link or keyword: 10 with 2 inputs gives up to 20 listings. Use `0` for as many as Marketplace returns. A very large search is read up to 400 result pages per link or keyword.

A single listing link or listing id returns that one listing: filters, location and the maximum listings setting do not apply to it, and its details are always read.

#### Filters

Price, condition, listed within, sort, delivery and availability apply to keywords and search links. Category links support the price and distance filters only; use a keyword search to combine the others. Listed within combined with a price sort usually returns no listings, so pair it with **Newest first** or **Best match**. The search radius may be ignored by Marketplace, so results can extend beyond it, and shipping-only searches often return no listings.

#### Include listing details

On by default. The Actor opens every listing, which needs one extra request per listing and makes the run slower, but it fills the fields listed in the warning above. Turn it off for a faster run that only has the information shown in search results.

### ⬆️ Output

Results appear in the **Output** tab while the run is going. The main table has ten views: overview, pricing, location, details, photos and videos, status and timing, vehicles, property, seller and search source. Pick or leave out fields before you export, and download as **JSON, CSV, Excel, HTML or XML**. The same Facebook Marketplace export options work for every table. Each run produces a Facebook Marketplace dataset with one row per listing.

#### Example output (illustrative)

```json
{
    "id": "1568638318275481",
    "url": "https://www.facebook.com/marketplace/item/1568638318275481/",
    "title": "Electric bike",
    "price": "$400",
    "price_amount": 400.0,
    "currency": "USD",
    "is_free": false,
    "condition": "used_good",
    "category_name": "Bicycles",
    "city": "Jersey City",
    "state": "NJ",
    "image_count": 7,
    "status": "AVAILABLE",
    "search_query": "bike",
    "position": 1,
    "has_details": true,
    "scraped_at": "2026-10-18T10:00:00Z"
}
```

#### Output fields explained

| Field | Meaning |
|---|---|
| 💰 `price`, `price_amount`, `currency` | Price as shown, the number, and the currency code |
| 📍 `city`, `state`, `location_text` | Where the item is listed |
| 🏷️ `condition`, `condition_label` | Item condition (needs listing details) |
| ⏱️ `created_at`, `days_listed` | When the listing was created and its age in days |
| 🔎 `search_query`, `position`, `source_url` | Which input produced the row and its place in the results |
| ✅ `has_details` | `true` when the listing page was read |

### 🎯 Use cases

- 📊 **Facebook Marketplace price research:** compare asking prices across cities with `price_amount`, `currency` and `location_text`.
- 🔄 **Facebook Marketplace reseller research:** find items sorted newest first and check `condition`, `days_listed` and photos before you buy.
- 🚗 **Used car listings scraper:** collect year, make, model and mileage from Facebook Marketplace vehicle listings into one sheet.
- 🏠 **Facebook Marketplace rental listings:** run keyword searches such as `apartment` and read `bedrooms`, `bathrooms` and `property_type`.
- 📉 **Facebook Marketplace price tracker:** run the same searches on a schedule and compare the datasets from each run to see price changes. The Actor does not store price history by itself.
- 🗃️ **Facebook Marketplace database:** keep the rows of each run in your own database or spreadsheet.
- 📈 **Facebook Marketplace data analytics:** load the rows into a BI tool to chart prices by city or category.
- 🏪 **Second hand marketplace scraper:** watch a local second hand market for a product category.
- 🤖 **Data for AI:** the structured JSON can be passed to an LLM or loaded into a vector store.

### 🔗 What are other tools for Facebook Marketplace and listing data?

- 👥 [Facebook Buy & Sell group posts](https://apify.com/data_wiki/facebook-group-scraper): scrape public Facebook groups, including Buy & Sell listings, posts and comments.
- 💬 [Scrape comments from Facebook posts](https://apify.com/data_wiki/facebook-comment-scraper): get every comment and reply from public posts, reels and videos.
- 🏠 [Airbnb listings scraper](https://apify.com/data_wiki/airbnb-scraper): nightly prices, hosts, amenities and reviews for listings in any city.
- 📦 [Wholesale price scraper for 1688](https://apify.com/data_wiki/1688-wholesale-products-scraper): bulk price tiers and supplier data for sourcing and price tracking.
- 🌐 The scraped site: [Facebook Marketplace](https://www.facebook.com/marketplace/).
- 📚 Apify docs: [integrations](https://docs.apify.com/platform/integrations), [schedules](https://docs.apify.com/platform/schedules) and the [API reference](https://docs.apify.com/api/v2).

### ❓ Frequently asked questions

#### How does Facebook Marketplace Scraper work?

You give it Marketplace links, listing ids or keywords and it will scrape Facebook Marketplace listings for each one. Facebook Marketplace data scraping runs in the cloud, so nothing is installed on your computer. It reads the public pages any visitor can see, applies your filters and location, saves each listing as soon as it is ready and writes the extra tables and a run summary. It uses plain HTTP requests with no browser, retries when a request fails and switches to another connection if it is blocked.

#### Can you scrape Facebook Marketplace without a login?

Yes. It needs no Facebook account, no password and no cookies, so you can scrape Facebook Marketplace without cookies, starting from only a link or a keyword. It reads public listings only, so a listing that needs a login to view is reported as unavailable.

#### Can I scrape many keywords and cities at once?

Yes. Put one link or keyword per line in the input to scrape Facebook Marketplace data for many cities, products and categories in one run. Each line is handled in turn with its own listing limit, which makes it a Facebook Marketplace data scraper for bulk work. The Inputs table shows the status and listing count of every line.

#### Is it legal to scrape Facebook Marketplace?

The Actor collects only data that is publicly visible. Whether it is legal to scrape Facebook Marketplace for your use depends on your country, on Facebook's terms and on what you do with the data. Facebook Marketplace GDPR scraping questions mostly concern personal data such as seller names, so keep only what you need. This is not legal advice; you are responsible for complying with the site's terms and with laws such as GDPR and CCPA.

#### Why am I getting fewer results than expected?

Marketplace returned no more listings for that search and filter combination. Common causes are a narrow price range, a short listed-within window, a price sort combined with listed within, a filter that category links do not support, or an unknown city name. Check the log warnings and the Inputs table first.

#### Can I connect it to n8n and other apps?

Yes. Through the Apify platform you can connect runs with n8n, Make, Zapier, Slack, Airbyte, Google Sheets and GitHub, or use webhooks to react when a run finishes. For example, a Facebook Marketplace scraper n8n workflow can start a run on a schedule and pass the rows on to the next step.

#### Can I use it as a Facebook Marketplace API from Python?

Yes. This Facebook Marketplace scraper Apify Actor can be started through the Apify API with the `apify-client` package (https://apify.com/data_wiki/facebook-marketplace-scraper/api). A Facebook Marketplace API search is just a run with a keyword in `urls`:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("data_wiki/facebook-marketplace-scraper").call(
    run_input={"urls": ["iphone 13"], "resultsLimit": 20}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["title"], item["price"])
```

A short Facebook Marketplace scraper Python script like this is enough to start a run and read the rows. The same input works over plain HTTP from any language, as a Facebook Marketplace scraper API call:

```bash
curl -X POST "https://api.apify.com/v2/actors/data_wiki~facebook-marketplace-scraper/runs" \
  -H "Authorization: Bearer <YOUR_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"urls":["iphone 13"],"resultsLimit":20}'
```

The run's dataset can then be read back by API, which works as a Facebook Marketplace data API for your own tools.

#### Can I use it with AI agents through MCP?

Yes. The hosted Apify MCP server (`https://mcp.apify.com`) lets AI agents find an Actor with `search-actors`, check it with `fetch-actor-details` and run it with `call-actor`.

#### What are the limits of Facebook Marketplace Scraper?

Each link or keyword is read up to 400 result pages, filters differ for category links, radius and shipping filters may return less than expected, and fields marked as needing listing details are empty when that option is off. Marketplace itself decides how many listings it returns for a search.

#### 💬 Your feedback and custom solutions

Found a bug or need another field? Open an issue on the Actor's **Issues** tab. Need a custom solution? Contact hello.datawiki@gmail.com.

# Actor input Schema

## `urls` (type: `array`):

One entry per line. Marketplace search links, category links, single listing links (.../marketplace/item/ID), listing ids, or plain keywords such as iphone 13. Bulk input is supported.

## `location` (type: `string`):

Applies to keywords, search links and category links. A city name used by Marketplace (nyc, london), a place such as Austin, TX, or coordinates as lat,lon. Leave empty to use the city in each link, or New York.

## `resultsLimit` (type: `integer`):

Maximum number of listings to save for each link or keyword, e.g. 10 with 2 inputs gives up to 20 listings. Use 0 for as many as Marketplace returns.

## `includeListingDetails` (type: `boolean`):

Open every listing to add the description, all photos, condition, category, seller rating and join date, and vehicle or property specs. Slower, because each listing needs one extra request.

## `minPrice` (type: `number`):

Only listings priced at or above this amount. Leave empty for no minimum.

## `maxPrice` (type: `number`):

Only listings priced at or below this amount. Leave empty for no maximum.

## `condition` (type: `array`):

Only items in these conditions. Leave empty for any condition.

## `listedWithin` (type: `string`):

Only listings created within this period. Marketplace returns no listings when this is combined with price sorting; use Newest first or Best match instead.

## `sortBy` (type: `string`):

Order of the results.

## `radiusKm` (type: `number`):

Distance from the location in kilometres. Marketplace may ignore it for logged-out visitors, so results can extend beyond it. Leave empty for the default.

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

Local pickup, shipping, or both.

## `availability` (type: `string`):

Show available items, sold items, or both.

## `proxyConfiguration` (type: `object`):

Runs start without a proxy. If Facebook blocks the request, the Actor automatically switches to a datacenter proxy and then a residential proxy, and stays on it for the rest of the run.

## Actor input object example

```json
{
  "urls": [
    "https://www.facebook.com/marketplace/nyc/search?query=bike"
  ],
  "location": "",
  "resultsLimit": 10,
  "includeListingDetails": true,
  "condition": [],
  "listedWithin": "any",
  "sortBy": "best_match",
  "delivery": "any",
  "availability": "any",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `listings` (type: `string`):

All collected listings, overview view.

## `pricing` (type: `string`):

Prices, currency and delivery options.

## `location` (type: `string`):

City, state and coordinates.

## `details` (type: `string`):

Descriptions, condition, category and attributes.

## `media` (type: `string`):

Photo and video links per listing.

## `status` (type: `string`):

Availability and listing age.

## `vehicles` (type: `string`):

Vehicle specifications.

## `property` (type: `string`):

Property type, bedrooms and bathrooms.

## `seller` (type: `string`):

Seller name, rating and join date.

## `source` (type: `string`):

Which input produced each listing.

## `sellers` (type: `string`):

One row per listing seller.

## `mediaFiles` (type: `string`):

One row per photo or video.

## `attributes` (type: `string`):

One row per listing attribute.

## `sources` (type: `string`):

One row per link or keyword you gave, with its status and listing count.

## `summary` (type: `string`):

Totals for the run.

# 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 = {
    "urls": [
        "https://www.facebook.com/marketplace/nyc/search?query=bike"
    ],
    "resultsLimit": 10,
    "includeListingDetails": true,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("data_wiki/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 = {
    "urls": ["https://www.facebook.com/marketplace/nyc/search?query=bike"],
    "resultsLimit": 10,
    "includeListingDetails": True,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("data_wiki/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 '{
  "urls": [
    "https://www.facebook.com/marketplace/nyc/search?query=bike"
  ],
  "resultsLimit": 10,
  "includeListingDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call data_wiki/facebook-marketplace-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,data_wiki/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/MHTpqcLBfa6ObL3OU/builds/rLycWHq6FOBT0mzMk/openapi.json
