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

Facebook Marketplace Scraper extracts title, price, currency, condition, brand, model, year, mileage, location name, primary photo url, seller name, listing url for every row. Inputs: search keywords or direct URLs, location, radius, price filters, condition filter, scrape product details.

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

## Pricing

from $0.50 / 1,000 product listings

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

The **Facebook Marketplace Scraper** is a high-performance data extraction tool designed to collect public product listings, market prices, vehicle details, and seller profiles from Facebook Marketplace at scale. Gathering marketplace intelligence manually across dozens of cities and categories is tedious and prone to rate limits; using an automated **facebook marketplace scraper** enables engineering teams, e-commerce brands, and researchers to collect structured product data systematically in minutes. When teams need to **scrape facebook marketplace** without managing browser overhead, this **facebook marketplace product scraper** offers unmatched reliability and precision.

With this dedicated **facebook marketplace search scraper**, you can execute localized searches across any city, region, or address worldwide. Enter plain-text location queries such as `"Austin, TX"`, `"London, UK"`, or `"Tokyo, Japan"`, and the built-in intelligent geocoder automatically resolves geographic coordinates and local trading zones. Whether monitoring price fluctuations on pre-owned electronics, auditing localized automotive inventory, or benchmarking competitor pricing, the **facebook marketplace scraper** provides clean, structured dataset records ready for downstream analytics.

#### Core Capabilities

- **Global Location Intelligence**: Resolve any plain-text city, neighborhood, or postal address into exact coordinates and local trading radiuses without needing manual geocoding or numeric place IDs.
- **Dynamic Distance Expansion**: Configure custom search radiuses from 1 km to 500 km around any metropolitan or regional center using the **facebook marketplace search scraper**.
- **Multi-Criteria Sorting**: Seamlessly order product listings by suggested relevance, physical distance (nearest first), date listed (newest first), or price (lowest first or highest first).
- **Exact Price Filtering**: Restrict searches to custom minimum and maximum price boundaries to isolate specific budget tiers and eliminate irrelevant listings with the **facebook marketplace scraper**.
- **Condition & Recency Controls**: Target new, like new, good, or fair items, and filter by listing age (last 24 hours, last 7 days, or last 30 days) when you **scrape facebook marketplace**.
- **Deep Product & Seller Intelligence ($)**: Enable optional product detail enrichment to capture full unshortened descriptions, complete 20+ photo galleries, structured vehicle specifications, and seller ratings.
- **Direct Product Ingestion**: Provide direct marketplace product URLs or listing IDs to inspect specific items directly without running a broader keyword search.
- **Pay-Per-Event Transparency**: Benefit from a predictable pricing structure where you only pay for successfully collected listings, with an optional surcharge applied only when full product details are enriched.

***

### Practical Use Cases & Applications

Organizations across various sectors rely on this **facebook marketplace product scraper** to power localized market intelligence and programmatic decision-making:

- **E-Commerce Price Monitoring & Arbitrage**: Track localized asking prices for high-demand consumer electronics, designer apparel, and refurbished appliances. Identify underpriced inventory across regional hubs with the **facebook marketplace scraper** and benchmark local retail market value.
- **Automotive Inventory & Dealership Benchmarking**: Collect used vehicle listings across multiple metropolitan areas. The **facebook marketplace product scraper** extracts vehicle specifications including Make, Model, Year, Trim, Mileage, Transmission, Fuel Type, and Exterior/Interior colors for automated inventory tracking.
- **Real Estate & Rental Market Analysis**: Analyze regional home goods, furniture, and housing equipment postings with this **facebook marketplace extractor** to understand neighborhood demographic trends and economic activity.
- **Brand Protection & Counterfeit Detection**: Monitor unauthorized commercial resellers, grey-market distributors, and brand infringements by tracking seller profiles and product listings as you **scrape facebook marketplace** across diverse local marketplaces.
- **Machine Learning & Valuation Modeling**: Aggregate massive historical datasets of real-world asking prices, item descriptions, and condition gradings using the **facebook marketplace search scraper** to train machine learning pricing algorithms and appraisal engines.

***

### Target Audiences & Engineering Teams

This **facebook marketplace extractor** is designed for technical and commercial professionals who require reliable, enterprise-grade data feeds:

- **Data Engineers & ETL Architects**: Integrate clean, structured marketplace feeds directly into Snowflake, BigQuery, AWS S3, or PostgreSQL via automated Apify webhooks and REST APIs powered by the **facebook marketplace scraper**.
- **E-Commerce Merchants & Resellers**: Power automated repricing tools and inventory sourcing workflows by utilizing this **facebook marketplace product scraper** to monitor newly posted deals across targeted geographic radiuses.
- **Market Researchers & Data Analysts**: Conduct longitudinal price elasticity studies, regional supply chain analyses, and localized demand assessments when they **scrape facebook marketplace**.
- **Automotive Analysts & Dealership Groups**: Automatically scan private-party and dealer vehicle postings using the **facebook marketplace search scraper** to optimize vehicle acquisition prices and trade-in valuations.
- **Competitive Intelligence Teams**: Benchmark localized consumer trends and detect emerging product demand patterns before they appear in national retail figures with the **facebook marketplace extractor**.

***

### Key Architectural Advantages & Reliability

Compared to brittle browser extensions or manual copy-pasting, deploying the **facebook marketplace scraper** provides significant operational benefits:

| Capability | Facebook Marketplace Scraper | Browser Extensions | Manual Data Entry |
|---|---|---|---|
| **Data Throughput** | Thousands of listings per hour | Limited to single visible page | A few dozen items per day |
| **Geographic Flexibility** | Worldwide city & postal resolution | Locked to current browser location | Highly restricted |
| **Field Completeness** | 35+ structured data fields | Surface-level text only | High error rate & omissions |
| **Photo Extraction** | Full multi-photo gallery arrays | Low-res thumbnails | Tedious manual downloads |
| **Vehicle Specifications** | Extracted into structured attributes | Raw unstructured blob | Inconsistent formatting |
| **Automation & Scheduling** | Native API, webhooks & cron runs | Manual button clicks required | Completely manual |
| **Anti-Blocking Resilience** | Automated residential proxy routing | Frequent IP blocks & captchas | Rate limits on personal IP |
| **Billing Model** | Pay-Per-Event (pay for results only) | Monthly subscription fee | High labor costs |

***

### Quickstart: Step-by-Step Execution Guide

You can launch your first run with the **facebook marketplace product scraper** in less than two minutes using the Apify Console or API:

1. **Set Your Target Location**: Enter any city or address in the `location` field (e.g. `"Austin, TX"` or `"London, UK"`). The **facebook marketplace search scraper** automatically geocodes the coordinates and establishes the marketplace trading zone.
2. **Specify Search Keywords**: Provide one or more product search terms in `search_queries` (e.g. `["laptop", "bicycle"]`). To browse all local marketplace listings generally with the **facebook marketplace scraper**, leave this list empty.
3. **Configure Custom Filters (Optional)**: Set your preferred sorting order (`sort_by`), minimum and maximum price boundaries (`min_price`, `max_price`), item condition (`conditions`), or listing recency (`date_listed`). When you **scrape facebook marketplace**, standard filters and geocoding are always 100% free.
4. **Choose Detail Enrichment (Optional)**: If you require full descriptions, full 20+ photo galleries, and seller reputation scores, turn on `Scrape Product Details ($)`.
5. **Run & Export Data**: Click **Start**. Once the run completes, download your structured dataset in JSON, CSV, Excel, XML, or HTML format from the **facebook marketplace extractor**.

*Note on Free Accounts*: Free Apify accounts can collect up to 50 items in total per run across all search queries. Paid subscription tiers have unlimited volume.

***

### Input Parameters & Configuration Reference

Configure the **facebook marketplace scraper** using the input schema settings below:

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `location` | `String` | **Yes** | `"South San Francisco, California"` | The target city, neighborhood, or address to search. Automatically resolved into geographic coordinates by the **facebook marketplace search scraper**. (Optional if only direct product URLs are supplied). |
| `search_queries` | `Array[String]` | No | `["car"]` | Keywords to search (e.g. `["iphone 15", "furniture"]`), or direct Facebook Marketplace listing URLs/IDs. Leave empty to browse the general local feed. |
| `sort_by` | `String` | No | `"suggested"` | Ranking order: `"suggested"` (Suggested), `"nearest"` (Distance: Nearest first), `"newest"` (Date listed: Newest first), `"lowest_price"` (Price: Lowest first), or `"highest_price"` (Price: Highest first). |
| `min_price` | `Integer` | No | `0` | Minimum price filter (e.g. `500`). Set to `0` or leave empty to scrape listings of any price with this **facebook marketplace product scraper**. |
| `max_price` | `Integer` | No | `0` | Maximum price filter (e.g. `2000`). Set to `0` or leave empty to scrape listings of any price. |
| `conditions` | `Array[String]` | No | `[]` | Filter by item condition: `"new"`, `"like_new"`, `"good"`, or `"fair"`. Default is `[]` (all conditions). |
| `date_listed` | `String` | No | `"all"` | Recency filter: `"all"` (All, default), `"last_24h"` (Last 24 hours), `"last_7d"` (Last 7 days), or `"last_30d"` (Last 30 days). |
| `availability` | `String` | No | `"available"` | Filter by status: `"available"` (Active listings, default) or `"sold"` (Completed/archived listings). |
| `max_items` | `Integer` | No | `20` | Target number of products to collect per keyword or browse feed. A free Apify account collects up to 50 items in total per run across all queries; a paid plan has no limit. The **facebook marketplace extractor** paginates continuously until reaching your target. |
| `radius` | `Integer` | No | `65` | Search distance radius around target location in kilometers (1 to 500 km). |
| `scrape_product_details` | `Boolean` | No | `false` | **Scrape Product Details ($)**. When enabled, visits each product page to collect full descriptions, complete photo galleries, vehicle specs, and seller ratings. Incurs an extra per-product enrichment fee ($). |
| `proxyCountry` | `String` | No | `"US"` | Residential proxy country connection (chosen from over 150 supported global countries) to safely **scrape facebook marketplace**. |

***

### Extracted Dataset Schema & Field Definitions

The **facebook marketplace extractor** returns standardized, clean dataset records. Because sellers on Facebook Marketplace enter listing details voluntarily, fields are categorized into two tiers based on their expected availability:

#### Tier 1: Core Fields (High / Standard Availability)

These fields are populated for virtually every listing found by the **facebook marketplace scraper**:

| Field | Type | Description |
|---|---|---|
| **`id`** | `String` | **Unique Facebook Marketplace listing identifier.** |
| **`title`** | `String` | **Headline product title posted by the seller.** |
| `price` | `String` | Formatted current price string with currency symbol (e.g. `"$9,100"`). |
| `numeric_price` | `Number` | Clean numerical price value without currency symbols (e.g. `9100.0`). |
| `currency` | `String` | ISO 4217 standard currency code (e.g. `"USD"`, `"EUR"`, `"GBP"`). |
| `listing_url` | `String` | Canonical direct URL to the product listing. |
| `primary_photo_url` | `String` | High-resolution primary cover photo URL. |
| `all_photos` | `Array[String]` | List of high-resolution photo URLs attached to the listing. |
| `photo_count` | `Integer` | Total number of photos associated with the listing. |
| `location_name` | `String` | City, state, or neighborhood name where the item is located. |
| `city` | `String` | City or municipality name. |
| `state` | `String` | State, province, or region code/name. |
| `latitude` | `Number` | Approximate latitude coordinate of the listing area. |
| `longitude` | `Number` | Approximate longitude coordinate of the listing area. |
| `radius_km` | `Integer` | Geographic search radius in kilometers applied to discovery. |
| `creation_time` | `String` | ISO 8601 timestamp when the listing was created on Marketplace. |
| `date_listed` | `String` | Calendar date (YYYY-MM-DD) when the item was posted. |
| `availability` | `String` | Current stock availability (`"AVAILABLE"`, `"PENDING"`, `"SOLD"`). |
| `is_live` | `Boolean` | True if the listing is actively visible on Marketplace. |
| `is_sold` | `Boolean` | True if the listing is marked as sold or out of stock. |
| `is_pending` | `Boolean` | True if a purchase transaction is currently pending. |
| `is_hidden` | `Boolean` | True if the listing is hidden from friends or search. |
| `is_shipping_offered` | `Boolean` | True if nationwide or regional shipping delivery is offered. |
| `delivery_types` | `Array[String]` | Supported delivery methods (e.g. `["IN_PERSON"]`, `["SHIPPING"]`). |
| `is_messaging_enabled` | `Boolean` | True if direct buyer-seller messaging via Facebook Messenger is open. |
| `seller_name` | `String` | Display name of the seller. |
| `seller_id` | `String` | Seller's Facebook user or profile identifier. |
| `seller_profile_url` | `String` | Direct link to the seller's public Marketplace profile. |
| `seller_type` | `String` | Seller category (`"PRIVATE_SELLER"`, `"DEALERSHIP"`, `"BUSINESS"`). |
| `search_query` | `String` | Search keyword or URL that discovered this listing. |
| `search_location` | `String` | Geographic location queried. |
| `scraped_at` | `String` | ISO 8601 timestamp when the data was extracted. |

#### Tier 2: Detailed Attributes & Seller Intelligence (When Provided or when Scrape Product Details ($) is Enabled)

These fields are populated when sellers provide extended metadata or when `Scrape Product Details ($)` is activated on the **facebook marketplace product scraper**:

| Field | Type | Description |
|---|---|---|
| `subtitle` | `String` | Subtitle badge displayed under the title (e.g. `"102K miles"`, `"2 beds · 1 bath"`). |
| `description` | `String` | Full, unabridged product description text posted by the seller. |
| `condition` | `String` | Item condition grading (e.g. `"New"`, `"Used – like new"`, `"Used – good"`, `"Used – fair"`). |
| `brand` | `String` | Product brand, manufacturer, or vehicle make (e.g. `"Apple"`, `"Toyota"`, `"Subaru"`). |
| `model` | `String` | Product model name or vehicle model line (e.g. `"iPhone 17 Pro Max"`, `"RAV4"`). |
| `trim` | `String` | Specific vehicle trim package or edition (e.g. `"Limited Sport Utility 4D"`). |
| `year` | `Integer` | Four-digit model release or vehicle manufacture year (e.g. `2024`, `2012`). |
| `mileage` | `String` | Formatted odometer mileage display (e.g. `"102,359 miles"`, `"180K miles"`). |
| `numeric_mileage` | `Integer` | Normalized numerical odometer value (e.g. `102359`). |
| `transmission` | `String` | Vehicle transmission type (e.g. `"Automatic"`, `"Manual"`). |
| `fuel_type` | `String` | Vehicle fuel or propulsion type (e.g. `"Gasoline"`, `"Electric"`, `"Hybrid"`). |
| `exterior_color` | `String` | Vehicle or item exterior finish color (e.g. `"White"`, `"Black"`). |
| `interior_color` | `String` | Cabin interior color (e.g. `"Grey"`, `"Black"`). |
| `title_status` | `String` | Vehicle legal title status (e.g. `"Clean"`, `"Rebuilt"`, `"Salvage"`). |
| `vin` | `String` | 17-character unique Vehicle Identification Number (VIN). |
| `carfax_report_url` | `String` | Direct link to official Carfax vehicle history report when available. |
| `discount_percentage` | `String` | Calculated percentage discount from original price (e.g. `"39% off"`, `"97% off"`). |
| `location_id` | `String` | Facebook internal city page or location identifier. |
| `is_boosted` | `Boolean` | True if the seller ran a paid promotion or boost on this product. |
| `c2c_shipping_eligible` | `Boolean` | True if nationwide consumer checkout shipping is available. |
| `can_viewer_message` | `Boolean` | True if prospective buyers are permitted to message the seller. |
| `bedrooms` | `Number` | Number of bedrooms for rental/housing listings (0 represents Studio). |
| `bathrooms` | `Number` | Number of bathrooms for rental/housing listings. |
| `square_feet` | `Integer` | Total living area size in square feet for real estate listings. |
| `property_type` | `String` | Housing classification (e.g. `"Apartment"`, `"Condo"`, `"House"`). |
| `is_pet_friendly` | `Boolean` | True if pets are permitted in rental property. |
| `laundry_type` | `String` | Laundry setup (e.g. `"In-unit laundry"`, `"Laundry in building"`). |
| `parking_type` | `String` | Parking setup (e.g. `"Garage parking"`, `"Off-street parking"`). |
| `search_pivots` | `Array[String]` | Related search suggestions and taxonomy pivot recommendations. |
| `attributes` | `Array[Object]` | Specifications and vehicle attributes key-value objects. |
| `features` | `Array[String]` | Clean list of equipment and amenity features (e.g. `["Leather Seats", "Moon Roof", "Navigation", "Backup Camera"]`). |
| `postal_code` | `String` | Postal or ZIP code where available. |
| `original_price` | `String` | Original/strikethrough price before discount if item is on sale (e.g. `"$150"`). |
| `numeric_original_price` | `Number` | Clean numerical original price (e.g. `150.0`). |
| `video_url` | `String` | Streamable or downloadable video URL if a video was attached. |
| `category_name` | `String` | Marketplace category classification (e.g. `"Cars & Trucks"`). |
| `category_id` | `String` | Facebook internal category identifier. |
| `category_path` | `Array[String]` | Category hierarchy breadcrumbs (e.g. `["Vehicles", "Cars & Trucks"]`). |
| `shipping_price` | `String` | Formatted shipping fee if shipping is available. |
| `inventory_type` | `String` | Listing inventory model (e.g. `"SINGLE_QUANTITY"` or `"MULTI_QUANTITY"`). |
| `inventory_count` | `Integer` | Number of available items for multi-quantity listings. |
| `dealership_name` | `String` | Commercial merchant or dealership business name where applicable. |
| `tags` | `Array[String]` | Listing hashtags or keyword tags. |
| `seller_marketplace_id` | `String` | Facebook Marketplace merchant profile ID. |
| `seller_ratings_are_private` | `Boolean` | True if the seller configured their ratings score to be private. |
| `seller_orders_shipped` | `Integer` | Total historical confirmed orders shipped by the seller. |
| `seller_profile_pic` | `String` | High-resolution avatar profile image URL of the seller. |
| `seller_join_time` | `String` | ISO timestamp when the seller joined Facebook. |
| `seller_rating_stars` | `Number` | 5-star seller rating average score on Facebook Marketplace. |
| `seller_rating_count` | `Integer` | Total count of reviews received by the seller. |
| `seller_is_verified` | `Boolean` | True if the seller holds a verified Marketplace badge. |

#### Sample Output Record

```json
{
  "id": "2224823828080265",
  "title": "2012 Toyota RAV4 · Limited Sport Utility 4D",
  "subtitle": "102K miles",
  "price": "$9,100",
  "numeric_price": 9100.0,
  "currency": "USD",
  "original_price": "$11,500",
  "numeric_original_price": 11500.0,
  "discount_percentage": "21% off",
  "listing_url": "https://www.facebook.com/marketplace/item/2224823828080265/",
  "primary_photo_url": "https://scontent.xx.fbcdn.net/v/t39.30808-6/car_photo_1.jpg",
  "all_photos": [
    "https://scontent.xx.fbcdn.net/v/t39.30808-6/car_photo_1.jpg",
    "https://scontent.xx.fbcdn.net/v/t39.30808-6/car_photo_2.jpg",
    "https://scontent.xx.fbcdn.net/v/t39.30808-6/car_photo_3.jpg"
  ],
  "photo_count": 3,
  "category_name": "Cars & Trucks",
  "category_id": "807311116002614",
  "category_path": ["Vehicles", "Cars & Trucks"],
  "brand": "Toyota",
  "model": "RAV4",
  "trim": "Limited Sport Utility 4D",
  "year": 2012,
  "mileage": "102,359 miles",
  "numeric_mileage": 102359,
  "transmission": "Automatic",
  "fuel_type": "Gasoline",
  "exterior_color": "White",
  "interior_color": "Grey",
  "title_status": "Clean",
  "location_name": "San Leandro, CA",
  "location_id": "112938475012345",
  "city": "San Leandro",
  "state": "CA",
  "postal_code": "94577",
  "latitude": 37.7188,
  "longitude": -122.1515,
  "radius_km": 65,
  "creation_time": "2026-10-25T15:48:34+00:00",
  "date_listed": "2026-10-25",
  "availability": "AVAILABLE",
  "is_live": true,
  "is_sold": false,
  "is_pending": false,
  "is_hidden": false,
  "is_boosted": false,
  "is_shipping_offered": false,
  "c2c_shipping_eligible": false,
  "can_viewer_message": true,
  "delivery_types": ["IN_PERSON"],
  "is_messaging_enabled": true,
  "inventory_type": "SINGLE_QUANTITY",
  "condition": "Used",
  "description": "Clean title, zero accidents, runs and drives excellent with cold AC.",
  "attributes": [
    {"name": "Make", "value": "Toyota", "label": "Toyota"},
    {"name": "Model", "value": "RAV4", "label": "RAV4"},
    {"name": "Trim", "value": "Limited Sport Utility 4D", "label": "Limited Sport Utility 4D"},
    {"name": "Mileage", "value": "102,359 miles", "label": "102,359 miles"},
    {"name": "Transmission", "value": "Automatic", "label": "Automatic"},
    {"name": "Fuel Type", "value": "Gasoline", "label": "Gasoline"},
    {"name": "Exterior Color", "value": "White", "label": "White"},
    {"name": "Interior Color", "value": "Grey", "label": "Grey"},
    {"name": "Title Status", "value": "Clean", "label": "Clean"}
  ],
  "features": [
    "Leather Seats",
    "Moon Roof",
    "Navigation",
    "Bluetooth",
    "Alloy Wheels",
    "Backup Camera",
    "Air Conditioning",
    "Heated Seats"
  ],
  "seller_name": "Nicky Soto Hernandez",
  "seller_id": "pfbid02cfRben3vmaiyYYTpLTiMaAT8544bPSCDZBUkZqyTTgpWDcBV5cJziVPsjPcukYcNl",
  "seller_marketplace_id": "249817263541829",
  "seller_profile_url": "https://www.facebook.com/marketplace/profile/pfbid02cfRben3vmaiyYYTpLTiMaAT8544bPSCDZBUkZqyTTgpWDcBV5cJziVPsjPcukYcNl/",
  "seller_profile_pic": "https://scontent.xx.fbcdn.net/v/t39.30808-1/seller_avatar.jpg",
  "seller_join_time": "2024-06-08T04:35:01+00:00",
  "seller_rating_stars": 4.7,
  "seller_rating_count": 3,
  "seller_ratings_are_private": false,
  "seller_is_verified": false,
  "seller_type": "PRIVATE_SELLER",
  "search_query": "toyota",
  "search_location": "New York, NY",
  "scraped_at": "2026-10-26T23:55:00+00:00"
}
```

***

### Operational Constraints & Platform Limits

- **Public Data Extraction Only**: The **facebook marketplace product scraper** extracts publicly accessible Marketplace listings only. Private or friend-restricted items cannot be collected by this **facebook marketplace scraper**.
- **Clean Output & Dynamic Field Inclusion**: Fields are dynamically included only when they contain valid data for that product. If an optional field (such as a vehicle VIN, rental bedrooms, or discount percentage) has no value for a listing, it is cleanly omitted from that record. Booleans and numerical values (including 0) are always preserved.
- **Ephemeral Image URLs**: Media URLs hosted on Facebook CDNs carry expiration tokens. For long-term image archiving, download assets immediately or ingest them into cloud storage (such as AWS S3 or Google Cloud Storage) as you **scrape facebook marketplace**.
- **Account Limits**: Free Apify accounts can collect up to 50 items in total per run across all search queries. Paid subscription tiers have unlimited volume.
- **Pay-Per-Event Billing Model**: Pricing operates strictly on Pay-Per-Event (PPE). You are billed for each product listing successfully collected and saved to your dataset. An extra surcharge applies only when `Scrape Product Details ($)` is turned on and successfully enriches a listing with deep details. Geocoding, location resolution, price filtering, and condition filtering are 100% free with no surcharges. Current pricing rates are displayed in the Apify Monetization tab.

***

### Best Practices & Performance Optimization

- **Leverage Residential Proxies**: Facebook Marketplace applies stringent geographic rate-limiting. Keep Apify Residential Proxies enabled and set `proxyCountry` to match your target search location for optimal throughput when you **scrape facebook marketplace**.
- **Use Focused Search Radiuses**: For dense metropolitan centers (e.g. New York, London, Tokyo), a 20 km to 50 km radius captures abundant listings without overlap. For rural or suburban areas, expand the radius to 100 km or more using the **facebook marketplace search scraper**.
- **Select Detail Enrichment Selectively**: When conducting rapid market price scans across thousands of items with this **facebook marketplace extractor**, leave `Scrape Product Details ($)` turned off to maximize extraction speed. Enable it when full vehicle specs, seller reputation scores, or high-res photo galleries are critical to your pipeline.
- **Schedule Incremental Runs**: Rather than running massive single queries, schedule daily recurring runs using the `date_listed: "last_24h"` filter to capture newly listed inventory incrementally with the **facebook marketplace scraper**.

***

### Troubleshooting & Frequently Asked Questions

#### Does this scraper require a Facebook login or account?

No. The **facebook marketplace extractor** operates entirely without user login credentials or personal cookies. Your personal Facebook accounts are never connected, eliminating account restriction risks when you **scrape facebook marketplace**.

#### Is there an item limit on a free Apify plan?

Yes. Free accounts can collect up to 50 items in total per run. Upgrading to any paid Apify plan removes this ceiling.

#### Does the free limit apply per day or per run?

The free plan limit applies per run. Each run can collect up to 50 items.

#### What should I do if the log says "Free user detected" but I am on a paid plan?

Open an issue in the **Issues** tab of this actor on Apify Console and we will inspect and resolve it promptly.

#### What happens if a search query returns fewer items than max_items?

The **facebook marketplace product scraper** paginates continuously until reaching your requested `max_items` target or until no further listings exist in the target area matching your filters. If a niche keyword in a small town only has 14 listings, the **facebook marketplace search scraper** extracts all 14 and terminates cleanly.

#### What export formats are supported?

Datasets can be downloaded instantly from the Apify Console or API in JSON, CSV, Excel (XLSX), XML, and RSS formats from this **facebook marketplace scraper**.

#### Can I search with multiple keywords simultaneously?

Yes. Pass multiple search terms in the `search_queries` array (e.g. `["macbook pro", "thinkpad", "dell xps"]`). The **facebook marketplace product scraper** processes each query sequentially, ensuring deduplication across items.

***

### Code Integration: Python, JavaScript & REST API

The **facebook marketplace scraper** can be integrated seamlessly into your applications and ETL pipelines using official Apify clients:

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run_input = {
    "location": "Austin, Texas",
    "search_queries": ["electric bike"],
    "sort_by": "lowest_price",
    "min_price": 200,
    "max_price": 1500,
    "max_items": 50,
    "scrape_product_details": True,
}

run = client.actor("facebook-marketplace-scraper").call(run_input=run_input)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{item.get('title')} - {item.get('price')} ({item.get('listing_url')})")
```

#### JavaScript / Node.js

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

const client = new ApifyClient({
    token: 'YOUR_APIFY_TOKEN',
});

const runInput = {
    location: 'Miami, Florida',
    search_queries: ['convertible'],
    sort_by: 'newest',
    max_items: 25,
    scrape_product_details: false,
};

const run = await client.actor('facebook-marketplace-scraper').call(runInput);
const { items } = await client.dataset(run.defaultDatasetId).listItems();

console.log(`Collected ${items.length} marketplace listings:`);
items.forEach((item) => {
    console.log(`- ${item.title}: ${item.price}`);
});
```

#### cURL / REST API

```bash
curl --request POST \
  --url "https://api.apify.com/v2/acts/facebook-marketplace-scraper/runs?token=YOUR_APIFY_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "location": "Chicago, Illinois",
    "search_queries": ["leather sofa"],
    "max_items": 30,
    "sort_by": "nearest"
  }'
```

***

### Technical Architecture Glossary

| Term | Definition |
|---|---|
| **Actor Run** | A single execution of the **facebook marketplace scraper** within a containerized cloud environment on Apify. |
| **Dataset** | An append-only storage container holding structured output records produced during a run to **scrape facebook marketplace**. |
| **Pay-Per-Event (PPE)** | A billing model where users are charged only for successful operational units (collected product records and enriched details) rather than wall-clock compute duration. |
| **Product Detail Enrichment ($)** | An optional deep extraction mode in this **facebook marketplace product scraper** that navigates to individual listing pages to extract full descriptions, 20+ photo galleries, and seller reputation metrics. |
| **Item Limit** | The maximum total records a free Apify account may collect during one execution (50 records). Paid accounts have no limit. |
| **Smart Geocoding** | Automated translation of plain-text geographic names and addresses into precise coordinates and local marketplace trading zones by the **facebook marketplace search scraper**. |
| **Residential Proxy** | Proxy routing that channels requests through genuine residential ISP IP addresses to ensure consistent scraping throughput without IP restrictions in this **facebook marketplace extractor**. |

***

### Complementary Scrapers in the Ecosystem

Enhance your data pipelines by combining the **facebook marketplace scraper** with other scrapers in the ecosystem:

- **Meta Ad Scraper**: Extract sponsored advertisements, creative copy, targeting criteria, and active campaign durations across Facebook and Instagram.
- **Instagram Profile & Post Scraper**: Gather creator profiles, engagement metrics, hashtags, and high-resolution media across Instagram.
- **LinkedIn Jobs & Company Scraper**: Extract real-time job openings, hiring trends, salary ranges, and company employee counts.

***

### Support & Feedback Channels

For technical inquiries, bug reports, feature requests, or custom scraping extensions regarding this **facebook marketplace scraper**, please open an issue in the **Issues** tab on the Actor Console page. Include your **Run ID** and input configuration to receive prompt assistance from the engineering team.

# Actor input Schema

## `search_queries` (type: `array`):

One or more search terms (e.g. 'car', 'laptop'), or direct Facebook Marketplace product URLs (e.g. 'https://www.facebook.com/marketplace/item/1474645144501779/'). If left empty, the scraper will browse all available marketplace listings in the target location.

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

City, town, or address to search near (e.g. 'South San Francisco, California', 'Faridpur, Dhaka, Bangladesh'). Automatically converted to Marketplace place coordinates and Place ID.

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

Search distance radius around the selected location in kilometers. Default is 65 km if left empty.

## `sort_by` (type: `string`):

Sorting criteria for Marketplace listings: Suggested (default relevance), nearest geographical distance, newest listing date, lowest price, or highest price.

## `min_price` (type: `integer`):

Optional minimum price filter (e.g. 500). Default is 0 (or leave empty), which places no minimum price restriction and scrapes products from any price starting at 0.

## `max_price` (type: `integer`):

Optional maximum price filter (e.g. 2000). Default is 0 (or leave empty), which places no upper price restriction and scrapes products across any price range.

## `conditions` (type: `array`):

Filter listings by item condition (New, Used – like new, Used – good, Used – fair). Select one or more conditions. Leave empty to include all conditions regardless of state.

## `date_listed` (type: `string`):

Filter listings by when they were posted: All (default), Last 24 hours, Last 7 days, or Last 30 days.

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

Filter listings by item status: Available (active listings, default) or Sold (completed/archived listings).

## `max_items` (type: `integer`):

The target number of products to collect for each search keyword or location browse feed. A free Apify account collects up to 50 items in total per run across all search queries; a paid plan has no limit. The scraper continuously paginates through Facebook Marketplace until your target is reached or until no more products are available for the location. Default is 20.

## `scrape_product_details` (type: `boolean`):

When enabled, visits each product's page to collect in-depth details: full product description, item condition, detailed vehicle & product specifications, complete photo gallery (up to 20+ high-res images), video URLs, delivery options, seller join date, seller avatar photo, seller ratings, and review counts. Enables the extra per-product detail enrichment charge ($). Default is false for fast search scraping.

## `proxyCountry` (type: `string`):

Select from the residential proxy country option list. The country your run connects from using residential proxies. Pick the one closest to your target market. If a country is not available right now, the run connects from the United States instead and the log says so.

## Actor input object example

```json
{
  "search_queries": [
    "car"
  ],
  "location": "South San Francisco, California",
  "radius": 65,
  "sort_by": "suggested",
  "min_price": 0,
  "max_price": 0,
  "conditions": [],
  "date_listed": "all",
  "availability": "available",
  "max_items": 20,
  "scrape_product_details": false,
  "proxyCountry": "US"
}
```

# Actor output Schema

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

Every listing collected in this run. Use the Export button on the Output tab to download in CSV, Excel, JSON, or XML format.

# 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 = {
    "search_queries": [
        "car"
    ],
    "location": "South San Francisco, California",
    "sort_by": "suggested",
    "min_price": 0,
    "max_price": 0,
    "conditions": [],
    "date_listed": "all",
    "availability": "available",
    "max_items": 20,
    "scrape_product_details": false,
    "proxyCountry": "US"
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlix/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 = {
    "search_queries": ["car"],
    "location": "South San Francisco, California",
    "sort_by": "suggested",
    "min_price": 0,
    "max_price": 0,
    "conditions": [],
    "date_listed": "all",
    "availability": "available",
    "max_items": 20,
    "scrape_product_details": False,
    "proxyCountry": "US",
}

# Run the Actor and wait for it to finish
run = client.actor("crawlix/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 '{
  "search_queries": [
    "car"
  ],
  "location": "South San Francisco, California",
  "sort_by": "suggested",
  "min_price": 0,
  "max_price": 0,
  "conditions": [],
  "date_listed": "all",
  "availability": "available",
  "max_items": 20,
  "scrape_product_details": false,
  "proxyCountry": "US"
}' |
apify call crawlix/facebook-marketplace-scraper --silent --output-dataset

```

## MCP server setup

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