# Facebook Marketplace Scraper: Listings, Prices, Sellers (`themineworks/facebook-marketplace-scraper`) Actor

Scrape Facebook Marketplace by keyword and city or coordinates, or by search, category and listing links: title, price, currency, location, seller, listed time, condition, category, photos and description. No login.

- **URL**: https://apify.com/themineworks/facebook-marketplace-scraper.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** E-commerce, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.34 / 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.
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

## Facebook Marketplace Scraper: Listings, Prices, Sellers

[![30 Facebook Marketplace listings with description, condition and all photos in 17 seconds](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/facebook-marketplace-scraper-hero.png)](https://console.apify.com/actors/nxDymFWuip2HaM1cY/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

From **The Mine Works**, makers of [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) and [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), with over 245,000 runs across 280+ public actors.

Updated 27 Oct 2026: first release. Keyword and city search, coordinates, search, category and listing links, Facebook's own filters, and the details of every listing (description, condition, all photos, coordinates, vehicle fields) in one flat row. Bookmark this Actor on its Store page so it is one click away next time.

### Why choose this actor?

- **The whole listing in one row.** Title, price as a number and as shown, currency code, condition, category, the full description, every photo, the city and the exact coordinates with the distance from your search point, the seller's name, rating and join date, and when it was listed. Cars, trucks and boats also get make, model, year, mileage, transmission, fuel and title status. In our test runs the seller name was filled on 592 of 600 rows and the description on 585.
- **Built for pipelines.** One listing link or id in, one row out, for a Clay table, an n8n flow or an AI agent. Or a list of keywords around a city, a pasted search or category link with its filters, and up to 5,000 rows per search. Same price per listing with details on or off.
- **No Facebook account.** No login, no cookies of yours, no browser and no CAPTCHA solving. Removed listings, links that are not Marketplace links and duplicates get a free `error` row with the reason and are never charged.

[![Run it on Apify](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/button-run.png)](https://console.apify.com/actors/nxDymFWuip2HaM1cY/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Part of The Mine Works E-commerce and marketplaces family:** [Ozon.ru Scraper](https://apify.com/themineworks/ozon-product-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [⭐ Amazon Reviews Scraper](https://apify.com/themineworks/amazon-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Amazon Product Scraper](https://apify.com/themineworks/amazon-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Etsy Listings Scraper](https://apify.com/themineworks/etsy-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [AliExpress Scraper](https://apify.com/themineworks/aliexpress-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Kleinanzeigen.de Scraper](https://apify.com/themineworks/kleinanzeigen-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral).

Guide and FAQs: [Facebook Marketplace Scraper on themineworks.com](https://themineworks.com/actors/facebook-marketplace-scraper/).

### Try it in one minute

Paste this into the JSON tab of the input page. It returns 30 guitars for sale around New York with their details and photos. It took 17 seconds in our test.

```json
{
  "searchQueries": ["guitar"],
  "location": "New York, New York",
  "maxListingsPerSearch": 30
}
```

Put several keywords on separate lines to run several searches at once, or paste Marketplace links into `startUrls`. A listing that two of your searches find is delivered once.

Apify's free plan includes $5 of credit every month, which covers about 890 listings at this actor's price.

#### Copy to your AI assistant

```text
themineworks/facebook-marketplace-scraper on Apify. Reads Facebook Marketplace as a logged out visitor and returns one flat row per listing: listing_id, listing_url, title, price, price_formatted, currency, condition, condition_label, category, description, location_text, location_city, location_state, latitude, longitude, distance_km, seller_name, seller_id, seller_rating, seller_joined_at, listed_at, status, primary_photo_url, photos, delivery_types, attributes, vehicle_make, vehicle_model, vehicle_year, vehicle_mileage, vehicle_transmission and the search that found it. Call ApifyClient("TOKEN").actor("themineworks/facebook-marketplace-scraper").call(run_input={"searchQueries": ["iphone 15"], "location": "Austin, Texas", "maxListingsPerSearch": 100}), then client.dataset(run["defaultDatasetId"]).list_items().items. Give searchQueries (keywords) with location (a city such as "Austin, Texas") or latitude and longitude, and or startUrls (Marketplace search links, category links such as https://www.facebook.com/marketplace/nyc/vehicles/, listing links https://www.facebook.com/marketplace/item/<id>/ or bare listing ids). Optional: maxListingsPerSearch (default 50, up to 5000), includeDetails (default true: description, condition, all photos, coordinates, vehicle fields), minPrice, maxPrice, sortBy (best_match, newest, price_low_to_high, price_high_to_low, distance_nearest, vehicle_year_newest, vehicle_mileage_lowest), daysSinceListed ("1", "7", "30"), itemCondition (new, used_like_new, used_good, used_fair), deliveryMethod (all, local_pick_up, shipping), radiusKm. Skip rows with a _type field (summary, info, error: never charged). Facebook shows a logged out visitor about 1,700 to 2,200 listings per search, then ends the list. Full spec: GET https://api.apify.com/v2/acts/themineworks~facebook-marketplace-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
```

### Key features

- **Search by keyword and place.** Write the place the way you would say it ("Austin, Texas", "London, United Kingdom", "Mumbai"), use a Marketplace city slug such as `nyc` or `la`, or give `latitude` and `longitude`. The city is turned into coordinates with Facebook's own place lookup, so it matches what Marketplace means by that city.
- **Paste links from your browser.** A search link keeps its filters (`minPrice`, `maxPrice`, `sortBy`, `daysSinceListed`, `itemCondition`, `deliveryMethod`). A category link such as `https://www.facebook.com/marketplace/nyc/vehicles/` reads that category feed. A listing link or a bare listing id returns that one listing.
- **Facebook's own filters.** Price range, newest first or price order, listed in the last 24 hours, 7 or 30 days, condition, local pickup or shipping. They are applied by Facebook before the results come back, so you pay only for listings that match.
- **Details of every listing.** With `includeDetails` on (the default) each listing's description, condition, category name, all photos, coordinates, postal code, currency, seller rating and join date, and vehicle fields are read too. Off, rows come from the search results only (title, price, city, seller name, listed time, one photo), which is faster. Same price either way.
- **Distance you can filter on.** Facebook's logged out search treats the radius as a hint and returns listings around the place, nearest areas first. With details on, every row has `distance_km` from your search point, so you can keep exactly the ones within your range.
- **Stops cleanly.** A refused request is retried on a new connection; four answers in a row with nothing new end a search; six inputs in a row that cannot be read end the run; the run stops before its time limit and keeps every row. The summary row says why each search ended.

### How to use it

#### One listing, for an enrichment step in Clay, n8n or an agent

```json
{
  "startUrls": ["https://www.facebook.com/marketplace/item/4690648534504900/"]
}
```

One row with the title, price, currency, condition, description, all photos, location, seller and listed time. A bare id (`"4690648534504900"`) works too. A listing that was removed returns a free `not_found` error row.

#### Keywords around a city

```json
{
  "searchQueries": ["iphone 15", "ipad pro", "macbook air"],
  "location": "Chicago, Illinois",
  "maxListingsPerSearch": 200
}
```

Each keyword is its own search, labelled in `search_query`. Sort the rows by `price` or filter on `condition` to compare offers.

#### A precise area by coordinates

```json
{
  "searchQueries": ["kayak"],
  "latitude": 47.6062,
  "longitude": -122.3321,
  "maxListingsPerSearch": 100
}
```

Keep the rows with `distance_km` under your limit to stay inside your area.

#### New listings only, for alerts

```json
{
  "searchQueries": ["herman miller aeron"],
  "location": "San Francisco, California",
  "sortBy": "newest",
  "daysSinceListed": "1",
  "maxListingsPerSearch": 50
}
```

Run it on a schedule (every hour or every morning) and compare `listing_id` with the previous run to see what is new.

#### A search link with its filters

```json
{
  "startUrls": ["https://www.facebook.com/marketplace/la/search/?query=iphone%2015&minPrice=300&maxPrice=900&sortBy=creation_time_descend"]
}
```

The filters in the link are used as they are. In our test this link returned 40 listings priced from 300 to 730, all listed that day.

#### A category feed, such as vehicles

```json
{
  "startUrls": ["https://www.facebook.com/marketplace/nyc/vehicles/"],
  "maxListingsPerSearch": 300
}
```

Vehicle rows carry `vehicle_make`, `vehicle_model`, `vehicle_year`, `vehicle_mileage`, `vehicle_transmission`, `vehicle_fuel_type`, `vehicle_title_status` and `vehicle_seller_type` when the seller filled them in.

#### Fast export from the search results only

```json
{
  "searchQueries": ["couch"],
  "location": "Houston, Texas",
  "maxListingsPerSearch": 1000,
  "includeDetails": false
}
```

Rows come from the search results: title, price, city, seller name, listed time, delivery types and the main photo. In our test 1,000 listings took 74 seconds this way. Same price per listing.

### Input parameters

| Parameter | Type | Default | What it does |
|---|---|---|---|
| `searchQueries` | array of strings | empty | Keywords, one search each, for example `guitar`. |
| `location` | string | `New York, New York` | City to search around, a Marketplace city slug such as `nyc`, or `"lat,lng"`. |
| `latitude`, `longitude` | numbers | empty | Search around this point instead of a city name. |
| `radiusKm` | integer | `65` | Radius sent to Facebook, 1 to 500 km (a hint for the logged out search; filter on `distance_km` for an exact range). |
| `startUrls` | array of strings | empty | Marketplace search, category or listing links, or bare listing ids. |
| `maxListingsPerSearch` | integer | `50` | Most listings per keyword, search link or category link, 1 to 5,000. |
| `includeDetails` | boolean | `true` | Reads each listing's description, condition, all photos, coordinates, seller rating and vehicle fields. |
| `minPrice`, `maxPrice` | integers | empty | Price range in the local currency of the place you search. |
| `sortBy` | string | `best_match` | `best_match`, `newest`, `price_low_to_high`, `price_high_to_low`, `distance_nearest`, `vehicle_year_newest`, `vehicle_mileage_lowest`. |
| `daysSinceListed` | string | `any` | `1`, `7` or `30` days. |
| `itemCondition` | array of strings | empty | Any of `new`, `used_like_new`, `used_good`, `used_fair`. |
| `deliveryMethod` | string | `all` | `all`, `local_pick_up` or `shipping`. |
| `proxyConfiguration` | object | residential, United States | Apify residential proxy. Leave it as it is. |

Give `searchQueries`, `startUrls` or both. Up to 500 searches and listing links per run.

### What data do you get?

One row per listing. Listing rows have no `_type` field; the summary, info and error rows do, so a filter on `_type` separates them.

| Field | What it is |
|---|---|
| `listing_id`, `listing_url` | Marketplace listing id and link |
| `title` | Listing title as the seller wrote it |
| `price`, `price_formatted`, `currency` | Price as a number, as shown (e.g. `$20`), and the currency code |
| `strikethrough_price` | Earlier price when the seller reduced it |
| `condition`, `condition_label` | e.g. `used_like_new` and `Used, like new` (details) |
| `category`, `category_slug`, `category_id` | e.g. `Musical Instruments`, `instruments` (details), and Facebook's category id |
| `description` | Full description (details) |
| `location_text`, `location_city`, `location_state`, `location_display` | e.g. `River Edge, NJ` |
| `latitude`, `longitude`, `postal_code`, `country_code` | Listing area (details; postal code and country when Facebook gives them) |
| `distance_km` | Distance from your search point (details) |
| `seller_name`, `seller_id`, `seller_type` | Seller as Facebook shows it to a logged out visitor |
| `seller_rating`, `seller_rating_count`, `seller_joined_at`, `seller_is_business` | Seller reputation (details) |
| `listed_at`, `listed_timestamp` | When the listing was posted |
| `status`, `is_live`, `is_sold`, `is_pending` | Availability |
| `primary_photo_url`, `photos`, `photo_count`, `has_video` | Main photo and all photo links (all photos with details) |
| `delivery_types`, `is_shipping_offered` | e.g. `IN_PERSON`, `DOOR_PICKUP`, `PUBLIC_MEETUP` |
| `attributes` | Other facts the seller filled in, name to value (details) |
| `vehicle_make`, `vehicle_model`, `vehicle_year`, `vehicle_trim`, `vehicle_mileage`, `vehicle_mileage_unit`, `vehicle_transmission`, `vehicle_fuel_type`, `vehicle_exterior_color`, `vehicle_interior_color`, `vehicle_title_status`, `vehicle_seller_type`, `vehicle_owners`, `vehicle_vin`, `vehicle_features`, `dealership_name` | Vehicle listings (details) |
| `subtitles` | Extra lines on the card, e.g. `9K miles` |
| `details_scraped`, `details_error` | Whether the details were read, and why not |
| `search_query`, `search_location`, `search_latitude`, `search_longitude`, `search_url`, `input` | The search or input that found the listing |
| `position`, `page` | Place of the listing in its search, and its results page |
| `scraped_at` | When the row was written |

**Summary row** (`_type: "summary"`, never charged): `searches_requested`, `searches_read`, `searches_failed`, `listings_requested`, `listings_read`, `listings_not_found`, `pages_read`, `listings_found`, `listings_delivered`, `charged_for`, `duplicates_skipped`, `details_ok`, `details_failed`, `transport` (requests, refusals, megabytes), `ended_on_deadline`, `stopped_by_max_cost`, `shortfall_reason` when fewer listings came back than asked, and `per_input`, one entry per search or link with `pages`, `listings_found`, `listings_delivered`, `reached_end` and why it `stopped`. The same summary is saved as the `OUTPUT` record of the run.

**Error rows** (`_type: "error"`, never charged): one per input that could not be read, with `error_type` (`invalid_input`, `not_marketplace`, `not_supported`, `not_found`, `place_not_found`, `no_results`, `blocked`, `duplicate`), `identifier` and `reason`.

#### Stable fields for automations

These were present in every listing row of our test runs, and their names will not change:

| Field | What it is |
|---|---|
| `listing_id` | The key to store and join on |
| `listing_url` | Link to the listing |
| `title` | Listing title |
| `price` | Price as a number |
| `price_formatted` | Price as shown |
| `currency` | Currency code |
| `location_text` | City and state |
| `seller_name` | Seller |
| `listed_at` | When it was posted |
| `primary_photo_url` | Main photo |
| `is_sold` | Sold flag |
| `input` | The input that found it |
| `condition`, `category`, `description`, `photos`, `latitude`, `longitude` | With details on |

Optional, present only when Facebook shows a value: `strikethrough_price`, `seller_rating` (only sellers with ratings), `postal_code` and `country_code` (mostly vehicles), `attributes`, `subtitles`, and the vehicle fields.

#### Output examples

One listing from the "guitar" search around New York with details on (test run, 27 Oct 2026, photo links shortened):

```json
{
  "listing_id": "1468156861821542",
  "listing_url": "https://www.facebook.com/marketplace/item/1468156861821542/",
  "title": "Mark II Acoustic Guitar with Bag & Acessories",
  "price": 40,
  "price_formatted": "$40",
  "currency": "USD",
  "condition": "used_good",
  "condition_label": "Used, good",
  "category": "Musical Instruments",
  "category_slug": "instruments",
  "category_id": "676772489112490",
  "description": "Sunburst Mark II acoustic guitar with a wooden body and a black and blue nylon gig bag. The guitar is approximately 83cm in length. It has a six-string configuration and a dark wood fretboard.",
  "location_text": "Summit, NJ",
  "location_city": "Summit",
  "location_state": "NJ",
  "latitude": 40.718078613281,
  "longitude": -74.371948242188,
  "distance_km": 30.8,
  "seller_name": "Octavio Rodriguez Lopez",
  "seller_type": "User",
  "seller_joined_at": "2024-04-06T19:33:18.000Z",
  "seller_rating": 5,
  "seller_rating_count": 1,
  "listed_at": "2026-08-20T20:42:42.000Z",
  "status": "AVAILABLE",
  "is_sold": false,
  "primary_photo_url": "https://scontent-phl2-1.xx.fbcdn.net/v/t39.84726-6/778835522_1756311155607605_2317823729524088230_n.jpg?...",
  "photos": [
    "https://scontent-phl2-1.xx.fbcdn.net/v/t39.84726-6/778835522_1756311155607605_2317823729524088230_n.jpg?...",
    "https://scontent-phl2-1.xx.fbcdn.net/v/t45.5328-4/782582610_1086078977264322_269535885402769530_n.jpg?..."
  ],
  "photo_count": 4,
  "delivery_types": [
    "IN_PERSON"
  ],
  "details_scraped": true,
  "search_query": "guitar",
  "search_location": "New York, New York",
  "position": 4,
  "page": 1
}
```

A vehicle from the `nyc/vehicles` category link (same day, trimmed):

```json
{
  "listing_id": "1960514788240332",
  "listing_url": "https://www.facebook.com/marketplace/item/1960514788240332/",
  "title": "2011 BMW 3 series 328i Coupe 2D",
  "price": 400,
  "currency": "USD",
  "condition": "used",
  "location_text": "New York, NY",
  "distance_km": 0.8,
  "seller_name": "Versace Rose",
  "listed_at": "2026-10-18T20:09:12.000Z",
  "photo_count": 3,
  "vehicle_make": "BMW",
  "vehicle_model": "3 Series",
  "vehicle_year": 2011,
  "vehicle_mileage": 9000,
  "vehicle_mileage_unit": "MILES",
  "vehicle_transmission": "AUTOMATIC",
  "vehicle_exterior_color": "grey",
  "vehicle_seller_type": "PRIVATE_SELLER",
  "subtitles": [
    "9K miles"
  ],
  "search_location": "New York, New York",
  "search_url": "https://www.facebook.com/marketplace/nyc/vehicles/",
  "position": 1
}
```

An error row for a listing that no longer exists (nothing charged):

```json
{ "_type": "error", "error_type": "not_found", "identifier": "https://www.facebook.com/marketplace/item/1111111111111111/", "listing_id": "1111111111111111", "reason": "Facebook has no public listing with this id (removed, sold and hidden, or private)." }
```

### Pricing

Pay per event: you pay for the listings you receive, plus a flat $0.002 per run, whatever memory you choose. Reading the details of each listing costs nothing extra.

| Event | When it is charged | Free plan | Bronze (Starter) | Silver (Scale) | Gold (Business) |
|---|---|---|---|---|---|
| `listing-scraped` | Once per listing row stored in your dataset | $5.58 per 1,000 | $4.50 per 1,000 | $3.42 per 1,000 | $2.34 per 1,000 |
| `run-start` | Once per run, after the first listings are delivered | $0.002 | $0.002 | $0.002 | $0.002 |

The price of one listing is the price per 1,000 divided by 1,000. A listing costs the same with or without details, and the residential proxy is included.

Never charged:

- links that are not Marketplace links, Marketplace pages that are not a search, category or listing (each gets an error row);
- listings that were removed or are private;
- a listing that a second search of the same run finds again;
- listings past your `maxListingsPerSearch`;
- the summary, info and error rows;
- a run that delivers no listings: the start fee is charged only after the first listings are delivered;
- anything past your "Max cost per run". The actor checks the budget before each batch of rows and stops while the total is still below your limit, so the run ends SUCCEEDED with a partial result and a status message saying so.

### Run it on a schedule

1. Open the actor in Apify Console, set your input and click **Save as a new task**.
2. In the task, open **Schedules**, click **Add schedule** and pick how often (every hour, every morning at 08:00 and so on).
3. With `sortBy: "newest"` and `daysSinceListed: "1"`, compare runs on `listing_id` to find new listings, and on `price` to see price drops.
4. Optional: add an integration (Google Sheets, Slack, a webhook) so each run lands where your team works.

### FAQ

#### What does this actor read?

Facebook Marketplace as Facebook shows it to someone who is not logged in: the search results and category feeds, and, with details on, each listing's own details and photos. It does not log in, message sellers or read anything behind a sign in.

#### How many listings can I get per search?

Facebook shows a logged out visitor about 1,700 to 2,200 listings per search and then ends the list. In our tests on 27 Oct 2026: 2,224 for "guitar" around New York, 2,087 for "sofa" around Austin, 1,732 for "iphone" around Los Angeles. To go further, split the search: several keywords, price bands with `minPrice` and `maxPrice`, or nearby cities. The summary row says per search whether the end of the list was reached (`reached_end`).

#### Why are some listings farther away than my radius?

Facebook's logged out search treats the radius as a hint: in our tests a 2 km and a 300 km radius returned the same first page around New York. Results come nearest areas first. With details on, each row has `distance_km` from your search point; filter on it to keep an exact range.

#### What is the difference between includeDetails on and off?

Off, each row comes from the search results: title, price, city and state, seller name, listed time, delivery types and the main photo. On, the details add the description, condition, category name, all photos, coordinates and distance, postal code, the currency code from Facebook, the seller's rating and join date, and vehicle fields. On is slower (600 listings in 159 seconds in our test against 1,000 in 74 seconds off) and costs the same.

#### Do I need a Facebook account, cookies or a proxy?

No. The actor never logs in and never asks for your cookies. It reads Marketplace through Apify residential proxy, which is included in the price; Facebook refuses Marketplace requests from datacenter proxies, so leave the proxy setting as it is.

#### Which places work?

Any place Marketplace covers. A city name is looked up with Facebook's own place search; write it as "City, State" or "City, Country" when the name exists in several countries (London in Ontario or in the United Kingdom). Coordinates always work. Prices and the currency follow the place you search.

#### Is the seller's phone number or profile included?

No contact details. The row has the seller's name and the id Facebook shows to a logged out visitor, plus their rating and when they joined. Buyers reach Marketplace sellers through Messenger, which needs a Facebook account. A few sellers hide their name from logged out visitors; in our 600 row test the name was missing on 7 rows.

#### Why are there listings from eBay?

Facebook mixes partner listings into Marketplace search, mostly from eBay. They have `seller_name` "EBay Marketplace", `seller_type` "Page" and `delivery_types` `SHIPPING_OFFSITE`, and they ship from far away (often 2,000 km or more from your search point). Facebook gives fewer details for them: no condition, category or coordinates. Filter on `delivery_types` to drop them, or set `deliveryMethod` to `local_pick_up`. In our test they were 6 of 600 rows.

#### How long does a run take?

In our tests: 17 seconds for the "Try it" input (30 listings with details), 159 seconds for 600 listings across 3 searches with details, and 74 seconds for 1,000 listings with details off. The default time limit is 3,600 seconds; the actor stops before it and keeps every row.

#### Can I use it from Claude, ChatGPT or Cursor (MCP)?

Yes, through Apify's MCP server. Connector URL: https://mcp.apify.com/?tools=themineworks/facebook-marketplace-scraper

- Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: turn on developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code: `claude mcp add -t http facebook-marketplace-scraper "https://mcp.apify.com/?tools=themineworks/facebook-marketplace-scraper"`

#### Which formats can I download?

JSON, CSV, Excel, XML, RSS and HTML from the run's Storage tab or through the API. The dataset has three ready views: Listings, Prices and Vehicles. In CSV and Excel, `photos` and `attributes` are spread over numbered or named columns.

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

The actor reads only listings that Facebook shows to anyone without logging in. Listings carry seller names, which can be personal data. You are responsible for how you use the data and for following Facebook's terms and data protection law such as the GDPR and the CCPA. This is general information, not legal advice.

### Integrations

- **Google Sheets**: send each run's listings to a sheet with Apify's Google Sheets integration; one row per listing fits a sheet as is.
- **Make, Zapier and n8n**: start a run from a new row in your sheet or CRM, or on a schedule, and pass the listing rows on when the run finishes, for example "new road bikes under $500 near us every morning to Slack".
- **Clay**: call the actor with one listing link per row to add its price, description, photos and seller.
- **Webhooks**: have Apify call your URL when a run succeeds, then fetch the dataset.
- **API and SDKs**: run it from Python or JavaScript with the Apify client, or with a plain HTTP call (see "Copy to your AI assistant" above).
- **MCP clients**: Claude, ChatGPT, Cursor and VS Code can run it as a tool through the connector URL in the FAQ.

### More from The Mine Works

**E-commerce and marketplaces**

- [Ozon.ru Scraper](https://apify.com/themineworks/ozon-product-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [⭐ Amazon Reviews Scraper](https://apify.com/themineworks/amazon-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Amazon Product Scraper](https://apify.com/themineworks/amazon-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Etsy Listings Scraper](https://apify.com/themineworks/etsy-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [AliExpress Scraper](https://apify.com/themineworks/aliexpress-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Kleinanzeigen.de Scraper](https://apify.com/themineworks/kleinanzeigen-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Carsales.com.au Scraper](https://apify.com/themineworks/carsales-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [eBay Product Listings Scraper](https://apify.com/themineworks/ebay-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Shopify Store Scraper](https://apify.com/themineworks/shopify-store-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [🛒 TikTok Shop Scraper](https://apify.com/themineworks/tiktok-shop-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Walmart Product & Price Scraper](https://apify.com/themineworks/walmart-product-price-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Vinted Scraper](https://apify.com/themineworks/vinted-listings-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Social media and video**

- [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Threads Search Scraper](https://apify.com/themineworks/threads-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instagram Profile Scraper](https://apify.com/themineworks/instagram-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Leads and business directories**

- [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Skip Trace Lookup](https://apify.com/themineworks/skip-trace-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Maps Email Scraper](https://apify.com/themineworks/maps-leads?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [2GIS Places Scraper](https://apify.com/themineworks/2gis-places-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Marketing, SEO and reviews**

- [Facebook Ad Library Scraper](https://apify.com/themineworks/meta-ad-library-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Ads Transparency Scraper](https://apify.com/themineworks/google-ads-transparency?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Similarweb Scraper](https://apify.com/themineworks/similarweb-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google News Scraper](https://apify.com/themineworks/google-news?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**LinkedIn**

- [LinkedIn Company Scraper](https://apify.com/themineworks/linkedin-company-details?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Post Scraper](https://apify.com/themineworks/linkedin-post-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Employees Scraper](https://apify.com/themineworks/linkedin-employees?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Profile Scraper](https://apify.com/themineworks/linkedin-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Real estate**

- [Zillow Rentals Scraper](https://apify.com/themineworks/zillow-rental-listings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zillow Sold Comps Scraper](https://apify.com/themineworks/zillow-recently-sold?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Real Estate MCP](https://apify.com/themineworks/india-real-estate-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Housing.com Scraper](https://apify.com/themineworks/housing-com-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Science, health and government data**

- [Academic Research MCP](https://apify.com/themineworks/academic-research-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [CourtListener Scraper](https://apify.com/themineworks/courtlistener-court-records?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Socrata Open Data Scraper](https://apify.com/themineworks/socrata-open-data?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [OpenAlex Scraper](https://apify.com/themineworks/openalex-scholarly-works?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Jobs and hiring**

- [Foundit Monster India Jobs](https://apify.com/themineworks/foundit-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Hirist Jobs Scraper](https://apify.com/themineworks/hirist-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Jobs MCP](https://apify.com/themineworks/india-jobs-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naukri Jobs Scraper](https://apify.com/themineworks/naukri-jobs?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Company and business data**

- [Company Domain Finder](https://apify.com/themineworks/company-domain-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GST Taxpayer Lookup](https://apify.com/themineworks/gst-taxpayer-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Company KYB Resolver](https://apify.com/themineworks/company-identity-resolver?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [SEC EDGAR Filings Scraper](https://apify.com/themineworks/sec-edgar-filings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Food and local services**

- [NoBroker Scraper](https://apify.com/themineworks/nobroker-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Swiggy Restaurant Scraper](https://apify.com/themineworks/swiggy-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zomato Scraper](https://apify.com/themineworks/zomato-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Developer and AI tools**

- [Website to Markdown Crawler](https://apify.com/themineworks/rag-crawler?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Skill Finder](https://apify.com/themineworks/github-skill-discovery?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Repo Scraper](https://apify.com/themineworks/github-repo-intelligence?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Trending Scraper](https://apify.com/themineworks/github-trending-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**More tools**

- [G2 Reviews Scraper](https://apify.com/themineworks/g2-reviews-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naver Blog Scraper](https://apify.com/themineworks/naver-blog-posts-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [WeChat Article Scraper 微信公众号文章](https://apify.com/themineworks/wechat-article-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Taobao Products Scraper 淘宝 天猫](https://apify.com/themineworks/taobao-products-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

### Support

Found a search that returns fewer listings than the site, or a field that comes back empty? Open an issue in the Issues tab with the input and the run ID, and we will look at it. For a field you need or a new source, email dmineworks@gmail.com.

*Search Facebook Marketplace by keyword and city, or paste search, category and listing links, and get every listing back as one row with price, currency, condition, description, photos, location and seller, no login.*

# Actor input Schema

## `searchQueries` (type: `array`):

What to search for, one keyword per line, as you would type it in the Marketplace search box. Example: iphone 15, sofa, honda civic. Each keyword is one search around the location below.

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

The city to search around, for example "Austin, Texas", "London, United Kingdom" or "Mumbai". A Marketplace city slug such as nyc or la works too, and so do coordinates written as "40.71,-74.00". Ignored when latitude and longitude are set.

## `latitude` (type: `number`):

Search around this point instead of a city name. Give longitude too. Example: 30.2672.

## `longitude` (type: `number`):

Search around this point instead of a city name. Give latitude too. Example: -97.7431.

## `radiusKm` (type: `integer`):

Search radius sent to Facebook, 1 to 500 km. Facebook's logged out search mostly ignores it and returns listings around the place, nearest areas first. With details on, each row has distance_km from the search point, so you can filter exactly.

## `startUrls` (type: `array`):

Links copied from your browser: a search (https://www.facebook.com/marketplace/nyc/search/?query=guitar, filters in the link are kept), a category (https://www.facebook.com/marketplace/nyc/vehicles/) or one listing (https://www.facebook.com/marketplace/item/1234567890/). A bare listing id works too.

## `maxListingsPerSearch` (type: `integer`):

The most listings to return for each keyword, search link or category link, 1 to 5,000. Facebook shows a logged out visitor about 1,700 to 2,200 listings per search, then ends the list. Listing links always return their one listing.

## `includeDetails` (type: `boolean`):

On: each listing's details are read too, for the description, condition, category name, all photos, exact coordinates and distance, currency, seller rating and join date, and vehicle fields (make, model, mileage, transmission). Off: rows come from the search results only (title, price, city, seller name, listed time, one photo), which is faster. Same price either way.

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

Lowest price, in the local currency of the place you search. Example: 100.

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

Highest price, in the local currency of the place you search. Example: 500.

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

Order of the results. Newest first is the one to use for monitoring new listings.

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

Only listings posted in this window.

## `itemCondition` (type: `array`):

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

## `deliveryMethod` (type: `string`):

Local pickup only, shipping only, or both.

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

Facebook Marketplace is read through Apify residential proxy (United States by default); Facebook refuses Marketplace queries from datacenter proxies. Pick a residential country close to the place you search if you like; any country works for any place.

## Actor input object example

```json
{
  "searchQueries": [
    "guitar"
  ],
  "location": "New York, New York",
  "radiusKm": 65,
  "maxListingsPerSearch": 30,
  "includeDetails": true,
  "sortBy": "best_match",
  "daysSinceListed": "any",
  "deliveryMethod": "all",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

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

No description

## `summary` (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 = {
    "searchQueries": [
        "guitar"
    ],
    "location": "New York, New York",
    "maxListingsPerSearch": 30,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/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 = {
    "searchQueries": ["guitar"],
    "location": "New York, New York",
    "maxListingsPerSearch": 30,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/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 '{
  "searchQueries": [
    "guitar"
  ],
  "location": "New York, New York",
  "maxListingsPerSearch": 30,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call themineworks/facebook-marketplace-scraper --silent --output-dataset

```

## MCP server setup

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