# Facebook marketplace scraper (`curious_coder/facebook-marketplace`) Actor

Scrape facebook marketplace listings from search URLs or using filters and get complete details including seller info. ✅ Option to get only new listings\* across multiple runs. 💰 Cost: $1.5 per 1K

- **URL**: https://apify.com/curious\_coder/facebook-marketplace.md
- **Developed by:** [Curious Coder](https://apify.com/curious_coder) (community)
- **Categories:** E-commerce, Social media
- **Stats:** 4,588 total users, 338 monthly users, 100.0% runs succeeded, 120 bookmarks
- **User rating**: 4.92 out of 5 stars

## Pricing

from $0.50 / 1,000 listing item basic infos

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

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

The Facebook Marketplace Scraper extracts data from [Facebook](https://facebook.com) Marketplace listings for research, analysis, price monitoring, and deal hunting.

**Supported categories:** Vehicles, Electronics, Real Estate, Classifieds, and all Marketplace categories.

#### Key features

- **Search or individual listings** – Use search URLs (category, location, etc.), direct listing URLs (e.g. `facebook.com/marketplace/item/123456789/`), or build a search from `searchKeyword`, `location`, and `radiusKm`
- **Get listing details** – Fetch full details, media, and vehicle specs (when applicable)
- **Get all listing photos** – Optional: skip media to reduce requests by ~33%
- **Strict filtering** – Exclude broad-match listings (outside location, similar items)
- **Scrape Until date** – Stop when listings are older than a given date (requires Get listing details + newest-first sort)
- **New-only monitoring** – Persist listing IDs across scheduled runs, skip unchanged results before fetching details, and emit price or availability changes again

#### Proxy & results

Proxies are managed internally you only need to set proxy country in proxy input field.

> ⚠️ **Important:** Search results vary by proxy country and Facebook login state. Set the proxy country to your target marketplace region and generate URLs in an **incognito window** for accurate results.

### Information provided by the scraper

Based on the chosen category, you get more or less detail. For example, here are the fields for Vehicles:

#### Vehicles listing

| 🆔 ID                         | 📸 Primary Listing Photo URI   | 💵 Listing Price             |
| ----------------------------- | ------------------------------ | --------------------------- |
| 🌐 Location                   | ℹ️ Condition  				 | #️⃣ Inventory count 			 |
| 📅 Creation Time              | 🚗 Vehicle Information         | 🚚 Delivery Types            |
| 👤 Seller Information         | 🚘 Vehicle Features            | 📊 Vehicle Safety Ratings    |
| 📷 Listing Photos             | 📚 Additional Data             | 💬 Reviews 				  	|

### Sample data

Here is the sample json output of this actor:

```json
{
	"id": "1384077819184401",
	"primary_listing_photo_url": "https://scontent-mia3-1.xx.fbcdn.net/v/t39.30808-6/395461179_24825490330375167_1179639226609319637_n.jpg?stp=c0.29.261.261a_dst-jpg_p261x260&_nc_cat=106&ccb=1-7&_nc_sid=5f2048&_nc_ohc=8mrP8mk737sAX90b48M&_nc_ht=scontent-mia3-1.xx&oh=00_AfDba_RT2HKFB8ZMAhcKz1wFwccWrGLgXFRFzRpvOXX-ng&oe=654C9FED",
	"listing_price": {
		"formatted_amount": "$3,500",
		"amount_with_offset_in_currency": "350000",
		"amount": "3500.00",
		"amount_with_offset": "350000",
		"currency": "USD"
	},
	"strikethrough_price": null,
	"comparable_price": null,
	"comparable_price_type": null,
	"location": {
		"reverse_geocode": {
		"city": "New York",
		"state": "NY",
		"city_page": {
			"display_name": "New York, New York",
			"id": "108424279189115"
		}
		},
		"latitude": 40.718078613281,
		"longitude": -73.998413085938,
		"reverse_geocode_detailed": {
		"country_alpha_two": "US",
		"postal_code_trimmed": "10013-4741"
		}
	},
	"is_hidden": false,
	"is_live": true,
	"is_pending": false,
	"is_sold": false,
	"is_viewer_seller": false,
	"min_listing_price": null,
	"max_listing_price": null,
	"marketplace_listing_category_id": "807311116002614",
	"marketplace_listing_title": "2013 Nissan Rogue · SV w/SL Pkg Sport Utility 4D",
	"custom_title": "2013 Nissan rogue SV w/SL Pkg Sport Utility 4D",
	"custom_sub_titles_with_rendering_flags": [
		{
		"subtitle": "142K miles"
		}
	],
	"origin_group": null,
	"pre_recorded_videos": [],
	"parent_listing": null,
	"marketplace_listing_seller": {
		"name": "Ray Goberdhan",
		"id": "pfbid02Q55A7QFyyRk9Y2nvxKBXhQ56szFFYSRdN52ZHvusyXZ1SnsR7T9thJ9pmHfDtfFGl",
		"user_id": "pfbid02Q55A7QFyyRk9Y2nvxKBXhQ56szFFYSRdN52ZHvusyXZ1SnsR7T9thJ9pmHfDtfFGl",
		"marketplace_user_profile": {
		"c2c_orders_shipped": null,
		"id": "2993266854024162"
		},
		"profile_picture": {
		"uri": "https://scontent-ord5-2.xx.fbcdn.net/v/t39.30808-1/354458750_23977528571838018_5293173894153871824_n.jpg?stp=cp6_dst-jpg_p74x74&_nc_cat=105&ccb=1-7&_nc_sid=5f2048&_nc_ohc=lBfiDHRZ1w4AX8HEkAo&_nc_ht=scontent-ord5-2.xx&oh=00_AfAeRQG2gK5ohakex9U-aRs9lv_YaHfWr-TZNOZ1iSbBHQ&oe=654D0AAB"
		},
		"profile_picture_160": {
		"uri": "https://scontent-ord5-2.xx.fbcdn.net/v/t39.30808-1/354458750_23977528571838018_5293173894153871824_n.jpg?stp=cp6_dst-jpg_p240x240&_nc_cat=105&ccb=1-7&_nc_sid=5f2048&_nc_ohc=lBfiDHRZ1w4AX8HEkAo&_nc_ht=scontent-ord5-2.xx&oh=00_AfBSoyGfMqikALmtnQDHG92RVo2sXuaL9W-H8w2xgQLwdg&oe=654D0AAB"
		},
		"profile_picture_112": {
		"uri": "https://scontent-ord5-2.xx.fbcdn.net/v/t39.30808-1/354458750_23977528571838018_5293173894153871824_n.jpg?stp=cp6_dst-jpg_p200x200&_nc_cat=105&ccb=1-7&_nc_sid=5f2048&_nc_ohc=lBfiDHRZ1w4AX8HEkAo&_nc_ht=scontent-ord5-2.xx&oh=00_AfBLjJ9_-nsdAPms1CTQICKHh2iiqolKa14hghIUoNIMqQ&oe=654D0AAB"
		},
		"profile_picture_64": {
		"uri": "https://scontent-ord5-2.xx.fbcdn.net/v/t39.30808-1/354458750_23977528571838018_5293173894153871824_n.jpg?stp=cp6_dst-jpg_p100x100&_nc_cat=105&ccb=1-7&_nc_sid=5f2048&_nc_ohc=lBfiDHRZ1w4AX8HEkAo&_nc_ht=scontent-ord5-2.xx&oh=00_AfDsqpmerPGfFKaAte_5KnkIXDz7qk5zNrOmOEBotVF5iw&oe=654D0AAB"
		},
		"profile_picture_60": {
		"uri": "https://scontent-ord5-2.xx.fbcdn.net/v/t39.30808-1/354458750_23977528571838018_5293173894153871824_n.jpg?stp=cp6_dst-jpg_p100x100&_nc_cat=105&ccb=1-7&_nc_sid=5f2048&_nc_ohc=lBfiDHRZ1w4AX8HEkAo&_nc_ht=scontent-ord5-2.xx&oh=00_AfDsqpmerPGfFKaAte_5KnkIXDz7qk5zNrOmOEBotVF5iw&oe=654D0AAB"
		},
		"profile_picture_50": {
		"uri": "https://scontent-ord5-2.xx.fbcdn.net/v/t39.30808-1/354458750_23977528571838018_5293173894153871824_n.jpg?stp=cp6_dst-jpg_p74x74&_nc_cat=105&ccb=1-7&_nc_sid=5f2048&_nc_ohc=lBfiDHRZ1w4AX8HEkAo&_nc_ht=scontent-ord5-2.xx&oh=00_AfAeRQG2gK5ohakex9U-aRs9lv_YaHfWr-TZNOZ1iSbBHQ&oe=654D0AAB"
		},
		"commerce_profile_picture_with_fallback_160": {
		"uri": "https://scontent-ord5-2.xx.fbcdn.net/v/t39.30808-1/354458750_23977528571838018_5293173894153871824_n.jpg?stp=cp6_dst-jpg_p240x240&_nc_cat=105&ccb=1-7&_nc_sid=5f2048&_nc_ohc=lBfiDHRZ1w4AX8HEkAo&_nc_ht=scontent-ord5-2.xx&oh=00_AfBSoyGfMqikALmtnQDHG92RVo2sXuaL9W-H8w2xgQLwdg&oe=654D0AAB"
		},
		"commerce_profile_picture_with_fallback_112": {
		"uri": "https://scontent-ord5-2.xx.fbcdn.net/v/t39.30808-1/354458750_23977528571838018_5293173894153871824_n.jpg?stp=cp6_dst-jpg_p200x200&_nc_cat=105&ccb=1-7&_nc_sid=5f2048&_nc_ohc=lBfiDHRZ1w4AX8HEkAo&_nc_ht=scontent-ord5-2.xx&oh=00_AfBLjJ9_-nsdAPms1CTQICKHh2iiqolKa14hghIUoNIMqQ&oe=654D0AAB"
		},
		"commerce_profile_picture_with_fallback_64": {
		"uri": "https://scontent-ord5-2.xx.fbcdn.net/v/t39.30808-1/354458750_23977528571838018_5293173894153871824_n.jpg?stp=cp6_dst-jpg_p100x100&_nc_cat=105&ccb=1-7&_nc_sid=5f2048&_nc_ohc=lBfiDHRZ1w4AX8HEkAo&_nc_ht=scontent-ord5-2.xx&oh=00_AfDsqpmerPGfFKaAte_5KnkIXDz7qk5zNrOmOEBotVF5iw&oe=654D0AAB"
		},
		"commerce_profile_picture_with_fallback_60": {
		"uri": "https://scontent-ord5-2.xx.fbcdn.net/v/t39.30808-1/354458750_23977528571838018_5293173894153871824_n.jpg?stp=cp6_dst-jpg_p100x100&_nc_cat=105&ccb=1-7&_nc_sid=5f2048&_nc_ohc=lBfiDHRZ1w4AX8HEkAo&_nc_ht=scontent-ord5-2.xx&oh=00_AfDsqpmerPGfFKaAte_5KnkIXDz7qk5zNrOmOEBotVF5iw&oe=654D0AAB"
		},
		"commerce_profile_picture_with_fallback_50": {
		"uri": "https://scontent-ord5-2.xx.fbcdn.net/v/t39.30808-1/354458750_23977528571838018_5293173894153871824_n.jpg?stp=cp6_dst-jpg_p74x74&_nc_cat=105&ccb=1-7&_nc_sid=5f2048&_nc_ohc=lBfiDHRZ1w4AX8HEkAo&_nc_ht=scontent-ord5-2.xx&oh=00_AfAeRQG2gK5ohakex9U-aRs9lv_YaHfWr-TZNOZ1iSbBHQ&oe=654D0AAB"
		},
		"join_time": 1250912804,
		"marketplace_ratings_stats_by_role": {
		"seller_stats": {
			"five_star_ratings_average": 0,
			"five_star_total_rating_count_by_role": 0
		},
		"seller_ratings_are_private": true
		},
		"marketplace_should_display_verified_badge": false
	},
	"delivery_types": [
		"IN_PERSON"
	],
	"story": {
		"translation_available_for_viewer": false,
		"translatability_for_viewer": {
		"source_dialect_name": "English"
		},
		"translated_message_for_viewer": null,
		"id": "UzpfSTEwMDAwMDIyNjI5MDI0OTpWSzoxMzg0MDc3ODE5MTg0NDAx",
		"actors": [
		{
			"name": "Ray Goberdhan",
			"id": "pfbid02Q55A7QFyyRk9Y2nvxKBXhQ56szFFYSRdN52ZHvusyXZ1SnsR7T9thJ9pmHfDtfFGl"
		}
		],
		"url": "https://www.facebook.com/marketplace/item/1384077819184401/",
		"tracking": "{\"photo_id\":\"24825490457041821\",\"story_location\":26,\"story_attachment_style\":\"native_templates\",\"ent_attachement_type\":\"LegacyCommerceAttachment\",\"actrs\":\"100000226290249\",\"ftmd_400706\":\"111112l\"}",
		"save_info": {
		"viewer_save_state": "NOT_SAVED"
		},
		"post_id": "24241793005435397"
	},
	"redacted_description": {
		"text": "Good condition. Was only used for pleasure. Reverse camera, leather seats, AC works perfectly, engine oil was only changed recently and very reliable."
	},
	"creation_time": 1698270232,
	"location_text": {
		"text": "New York, NY"
	},
	"location_vanity_or_id": "nyc",
	"listing_inventory_type": "SINGLE_QUANTITY",
	"formatted_price": {
		"text": "$3,500"
	},
	"payment_time_period": null,
	"condition": "USED",
	"logging_id": "24241793005435397",
	"marketplace_lead_gen_form": null,
	"listed_by": null,
	"real_estate_listing_agent": null,
	"inventory_count": null,
	"legal_reporting_cta_type": null,
	"legal_reporting_uri": null,
	"messaging_enabled": true,
	"listing_is_rejected": false,
	"seller_message_thread": null,
	"is_checkout_enabled": false,
	"is_draft": false,
	"can_seller_edit": false,
	"default_variant_listing": null,
	"reportable_ent_id": "24241793005435397",
	"hidden_from_friends": "VISIBLE_TO_EVERYONE",
	"can_share": true,
	"can_seller_change_availability": false,
	"messagingEnabled": true,
	"has_children": false,
	"active_order": null,
	"rebuy_order_receipt": null,
	"c2c_shipping_eligible": false,
	"is_shipping_offered": false,
	"most_recent_active_order_as_buyer": null,
	"order_summaries": [],
	"should_hide_pdp_shipping_content": true,
	"shipping_profile": null,
	"is_seller_business_onboarded": false,
	"product_item": {
		"id": "24241793005435397",
		"viewer_purchase_limit": -1,
		"boosted_marketplace_listing": null,
		"promoted_listing": null
	},
	"is_buy_now_enabled": false,
	"is_purchase_protected": false,
	"can_buyer_make_checkout_offer": false,
	"is_cart_enabled": false,
	"vacation_mode": null,
	"all_message_threads": {
		"is_empty": true
	},
	"should_show_txn_survey_on_mas": false,
	"incentive_campaign_for_free_shipping": null,
	"first_message_suggested_value": null,
	"marketplace_bump_info": null,
	"fi_enhanced_appeal_data": {
		"use_fi_appeals": false
	},
	"listing_seller_notices": [],
	"fair_market_value_data": null,
	"vehicle_condition": null,
	"vehicle_exterior_color": "white",
	"vehicle_features": [
		{
		"display_name": "Leather Seats",
		"feature_category": "SEATING",
		"feature_type": "LEATHER"
		},
		{
		"display_name": "Moon Roof",
		"feature_category": "EXTERIOR",
		"feature_type": "MOON_ROOF"
		},
		{
		"display_name": "Navigation",
		"feature_category": "CONVENIENCE",
		"feature_type": "NAVIGATION"
		},
		{
		"display_name": "Bluetooth",
		"feature_category": "ENTERTAINMENT",
		"feature_type": "BLUETOOTH"
		},
		{
		"display_name": "Alloy Wheels",
		"feature_category": "EXTERIOR",
		"feature_type": "ALLOY_WHEELS"
		},
		{
		"display_name": "Backup Camera",
		"feature_category": "SAFETY",
		"feature_type": "BACKUP_CAMERA"
		},
		{
		"display_name": "4-Cyl, 2.5 Liter",
		"feature_category": "ENGINE",
		"feature_type": null
		},
		{
		"display_name": "ABS",
		"feature_category": "SAFETY",
		"feature_type": "ABS_BRAKES"
		},
		{
		"display_name": "AM/FM Stereo",
		"feature_category": "ENTERTAINMENT",
		"feature_type": null
		},
		{
		"display_name": "AWD",
		"feature_category": "DRIVETRAIN",
		"feature_type": null
		},
		{
		"display_name": "Air Conditioning",
		"feature_category": "CONVENIENCE",
		"feature_type": "AIR_CONDITIONING"
		},
		{
		"display_name": "Alarm",
		"feature_category": "SAFETY",
		"feature_type": "ALARM"
		},
		{
		"display_name": "Automatic, CVT",
		"feature_category": "TRANSMISSION",
		"feature_type": null
		},
		{
		"display_name": "Bose Premium Sound",
		"feature_category": "ENTERTAINMENT",
		"feature_type": null
		},
		{
		"display_name": "MP3",
		"feature_category": "ENTERTAINMENT",
		"feature_type": "MP3"
		},
		{
		"display_name": "Cruise Control",
		"feature_category": "CONVENIENCE",
		"feature_type": "CRUISE_CONTROL"
		},
		{
		"display_name": "Dual Air Bags",
		"feature_category": "SAFETY",
		"feature_type": null
		},
		{
		"display_name": "F&R Head Curtain Air Bags",
		"feature_category": "SAFETY",
		"feature_type": null
		},
		{
		"display_name": "Fog Lights",
		"feature_category": "EXTERIOR",
		"feature_type": "FOG_LIGHTS"
		},
		{
		"display_name": "HID Headlights",
		"feature_category": "EXTERIOR",
		"feature_type": "HID_HEADLIGHTS"
		},
		{
		"display_name": "Heated Seats",
		"feature_category": "SEATING",
		"feature_type": "HEATED_SEATS"
		},
		{
		"display_name": "Keyless Entry",
		"feature_category": "CONVENIENCE",
		"feature_type": "KEYLESS_ENTRY"
		},
		{
		"display_name": "Power Door Locks",
		"feature_category": "CONVENIENCE",
		"feature_type": "POWER_DOOR_LOCKS"
		},
		{
		"display_name": "Power Seats",
		"feature_category": "SEATING",
		"feature_type": "POWER_SEATS"
		},
		{
		"display_name": "Power Steering",
		"feature_category": "CONVENIENCE",
		"feature_type": "POWER_STEERING"
		},
		{
		"display_name": "Power Windows",
		"feature_category": "CONVENIENCE",
		"feature_type": "POWER_WINDOWS"
		},
		{
		"display_name": "Premium Pkg",
		"feature_category": null,
		"feature_type": null
		},
		{
		"display_name": "Rear Spoiler",
		"feature_category": "EXTERIOR",
		"feature_type": "REAR_SPOILER"
		},
		{
		"display_name": "SL Pkg",
		"feature_category": null,
		"feature_type": null
		},
		{
		"display_name": "Side Air Bags",
		"feature_category": "SAFETY",
		"feature_type": null
		},
		{
		"display_name": "Tilt Steering Wheel",
		"feature_category": "CONVENIENCE",
		"feature_type": "TILT_STEERING_WHEEL"
		},
		{
		"display_name": "Traction Control",
		"feature_category": "SAFETY",
		"feature_type": "TRACTION_CONTROL"
		},
		{
		"display_name": "Stability Control",
		"feature_category": "SAFETY",
		"feature_type": "STABILITY_CONTROL"
		},
		{
		"display_name": "Satellite Radio",
		"feature_category": "ENTERTAINMENT",
		"feature_type": "SATELLITE_RADIO"
		}
	],
	"vehicle_fuel_type": null,
	"vehicle_identification_number": null,
	"vehicle_interior_color": "",
	"vehicle_is_paid_off": null,
	"vehicle_make_display_name": "Nissan",
	"vehicle_model_display_name": "Rogue",
	"vehicle_number_of_owners": null,
	"vehicle_odometer_data": {
		"unit": "MILES",
		"value": 142000
	},
	"vehicle_registration_plate_information": null,
	"vehicle_seller_type": "PRIVATE_SELLER",
	"vehicle_specifications": {
		"co2_emissions": null,
		"engine_size": null,
		"gas_mileage_city": null,
		"gas_mileage_combined": null,
		"gas_mileage_highway": null,
		"horse_power": null,
		"safety_rating_front": {
		"type": "SAFETY_RATINGS_FRONT",
		"units": "",
		"value": "4 Star Rating"
		},
		"safety_rating_overall": {
		"type": "SAFETY_RATINGS_OVERALL",
		"units": "",
		"value": "4 Star Rating"
		},
		"safety_rating_rollover": {
		"type": "SAFETY_RATINGS_ROLLOVER",
		"units": "",
		"value": "4 Star Rating"
		},
		"safety_rating_side": {
		"type": "SAFETY_RATINGS_SIDE",
		"units": "",
		"value": "5 Star Rating"
		},
		"safety_rating_side_barrier": {
		"type": "SAFETY_RATINGS_SIDE_BARRIER",
		"units": "",
		"value": "5 Star Rating"
		}
	},
	"vehicle_title_status": null,
	"vehicle_transmission_type": "AUTOMATIC",
	"vehicle_trim_display_name": "SV w/SL Pkg Sport Utility 4D",
	"vehicle_carfax_report": null,
	"attribute_data": [],
	"origin_target": {
		"id": "1663689853903557"
	},
	"shipping_offered": false,
	"legal_disclosure_impressum_url": null,
	"commerce_badges_info": {
		"source_summary": null,
		"badges": []
	},
	"listing_address": null,
	"seller_phone_number": null,
	"vehicle_website_link": null,
	"dealership_name": null,
	"seller": {
		"id": "pfbid02Q55A7QFyyRk9Y2nvxKBXhQ56szFFYSRdN52ZHvusyXZ1SnsR7T9thJ9pmHfDtfFGl",
		"marketplace_user_profile": {
		"business_information": null,
		"id": "2993266854024162"
		}
	},
	"energy_efficiency_class_eu": null,
	"listing_photos": [
		{
		"accessibility_caption": "May be an image of 1 person, car, road and street",
		"image": {
			"height": 959,
			"width": 720,
			"uri": "https://scontent-ord5-1.xx.fbcdn.net/v/t39.30808-6/395461179_24825490330375167_1179639226609319637_n.jpg?stp=dst-jpg_p720x720&_nc_cat=106&ccb=1-7&_nc_sid=5f2048&_nc_ohc=8mrP8mk737sAX-5TFKW&_nc_ht=scontent-ord5-1.xx&oh=00_AfAaH5eoaafQ6_sCJB8NNjHPWGMinzaEJj8gcpJZ--7-_w&oe=654C9FED"
		},
		"id": "24825490457041821"
		},
		{
		"accessibility_caption": "May be an image of car and road",
		"image": {
			"height": 959,
			"width": 720,
			"uri": "https://scontent-ord5-2.xx.fbcdn.net/v/t39.30808-6/395623847_24825485130375687_2530795154037914048_n.jpg?stp=dst-jpg_p720x720&_nc_cat=102&ccb=1-7&_nc_sid=5f2048&_nc_ohc=DXUnOg5x4SUAX86OQ8Z&_nc_ht=scontent-ord5-2.xx&oh=00_AfCyg7bOz55ZzLSNlMNZO8hlguo7vxgFzIqIjJfV75sGmA&oe=654BC4F9"
		},
		"id": "24825485150375685"
		},
		{
		"accessibility_caption": "May be an image of car and road",
		"image": {
			"height": 959,
			"width": 720,
			"uri": "https://scontent-ord5-2.xx.fbcdn.net/v/t39.30808-6/394333783_24825485107042356_1605326722481083868_n.jpg?stp=dst-jpg_p720x720&_nc_cat=105&ccb=1-7&_nc_sid=5f2048&_nc_ohc=KGgStJJqGOMAX8Xxpz4&_nc_ht=scontent-ord5-2.xx&oh=00_AfCEwVMPjEZXosK6ZrIwPp6Jj2jEt9azIbdeXgY96Z-Rdw&oe=654C7AE6"
		},
		"id": "24825485143709019"
		},
		{
		"accessibility_caption": "May be an image of text",
		"image": {
			"height": 959,
			"width": 720,
			"uri": "https://scontent-ord5-2.xx.fbcdn.net/v/t39.30808-6/395818923_24825485133709020_2654919834618037708_n.jpg?stp=dst-jpg_p720x720&_nc_cat=102&ccb=1-7&_nc_sid=5f2048&_nc_ohc=YfsAuUB9i5oAX86AAfO&_nc_ht=scontent-ord5-2.xx&oh=00_AfDTlX5seQ2fYHIu2RRVD75SsPiLzv-KhVjT4Al1QwvWrQ&oe=654D2363"
		},
		"id": "24825485163709017"
		},
		{
		"accessibility_caption": "May be an image of text",
		"image": {
			"height": 959,
			"width": 720,
			"uri": "https://scontent-ord5-1.xx.fbcdn.net/v/t39.30808-6/398755397_24883303351260531_635019047324926861_n.jpg?stp=dst-jpg_p720x720&_nc_cat=101&ccb=1-7&_nc_sid=5f2048&_nc_ohc=N4Wb3EH3cIsAX-6Dg2a&_nc_ht=scontent-ord5-1.xx&oh=00_AfCLqWjT6CySi1XSHzwkwQ2wME8FJlThDprm8jsMYygRDQ&oe=654C4E34"
		},
		"id": "24883303364593863"
		}
	]
}
```

#### Charging info

Each output item includes an `apify_charge_info` field indicating which chargeable events were applied (for PPE billing transparency):

| Field | Description |
|-------|-------------|
| `listing_item` | Base item pushed (always `true`) |
| `listing_item_details` | Details page was fetched (when Get listing details enabled) |
| `seller_details` | Seller profile URL was fetched (when Get seller profile URL enabled) |

### Input options

| Option | Type | Default | Description |
|--------|------|---------|-------------|
| `urls` | array | — | Search URLs (e.g. `marketplace/nyc/cars`) or individual listing URLs (e.g. `marketplace/item/3195892660712281/`). Open in incognito to verify. Optional if `location` is set. |
| `searchKeyword` | string | — | Search term. Used with `location` to build `/marketplace/{location}/search?query=...`. |
| `location` | string | — | Marketplace location slug from Facebook (e.g. `nyc`, `sanfrancisco`). Required to build a search URL from filters. |
| `radiusKm` | integer | — | Search radius in km. Adds `radius_in_km` to the built search URL. |
| `getListingDetails` | boolean | `false` | Visit each listing's details page for full data (description, photos, vehicle specs, etc.). |
| `getAllListingPhotos` | boolean | `true` | When Get listing details is on, fetch listing media. Set to `false` to skip and reduce requests by ~33%. |
| `strictFiltering` | boolean | `true` | Exclude broad-match listings (outside your location, similar items). |
| `onlyNewListings` | boolean | `false` | Scrape only new or changed search listings. Requires Date listed = Last 24 hours (`daysSinceListed=1`) on Filters or on every search URL. Mixed URLs are rejected. Individual listing URLs are not covered. Cache entries older than 24 hours are pruned. |
| `purgeCache` | boolean | `false` | Clear the selected monitoring cache before the run. |
| `cacheStorageId` | string | `facebook-marketplace-listing-cache` | Named key-value store shared by monitoring runs. Use a separate store for each independent search or workflow. |
| `maxPagesPerUrl` | integer | — | Max search pages per URL. |
| `untilDate` | string | — | Stop when listings are older than this date (YYYY-MM-DD). Requires **Get listing details** and a URL sorted by newest first (`sortBy=creation_time_descend`). |
| `proxy` | object | — | Set proxy country (e.g. `apifyProxyCountry: "US"`). Results depend on proxy region. |

### Quick start

1. Open [Facebook Marketplace](https://www.facebook.com/marketplace/) in an **incognito window**.
2. Set location, category, or search query and copy the URL—or copy a specific listing URL (e.g. `facebook.com/marketplace/item/123456789/`).
3. Paste the URL(s) into the actor input. Enable **Get listing details** for full data.
4. Set **Proxy → country** to match your target marketplace (e.g. US, IN, UK).
5. Click **Start** and download results as JSON, CSV, or Excel.

**Deal hunting tip:** Set Date listed to Last 24 hours (`daysSinceListed=1`), enable `onlyNewListings`, and schedule the actor every 5–15 minutes. Only new listings and listings whose visible price or availability changed are emitted. Use a distinct `cacheStorageId` for each independent search or workflow so different keywords/locations do not share one cache.

### Performance tips

- **Light runs:** Use 512 MB memory for listing-only scrapes to reduce cost.
- **Faster detail scrapes:** Set `getAllListingPhotos: false` when you don't need listing photos.
- **Large scrapes:** Use `maxPagesPerUrl` to control output size and costs.

### Integrations

You can use [Make](https://www.make.com/en/register?pc=growthhack) to integrate Facebook marketplace scraper to any other SaaS platform by designing your own automation flows.

### Facebook marketplace API

The actor stores results in a dataset. You can export data in various formats such as CSV, JSON, XLS, etc.
You can scrape and access data on demand using API. For more information, Go to [Facebook marketplace scraper API integration](https://apify.com/curious_coder/facebook-marketplace/api/endpoints) page

### Use Cases & Verified Success Stories

Real businesses and marketers using Facebook scraping to drive measurable results:

#### 3. GeeLark User - $2,000/Month Facebook Marketplace Arbitrage

**Source:** [GeeLark Blog](https://www.geelark.com/blog/facebook-marketplace-success-story/)\
**Business Model:** Product Sourcing & Reselling

**The Challenge:**\
A reseller tried scaling Facebook Marketplace outreach using Puppeteer and browser-based anti-detect tools, but accounts kept getting flagged by Facebook's detection systems.

**The Solution:**\
Switched to GeeLark's real-device mobile automation to send messages from actual Android devices, making the activity appear as genuine mobile users.

**The Process:**

- Uses Next.js and Node.js backend
- Custom Chrome extension for one-click scheduling
- 20 mobile devices rotating messages
- Human-like message randomization and timing

**Results:**

- **200 messages per day** (up from ~8 using Facebook alone)
- Contacts 200 sellers daily with about 20 replies
- Sources 300+ items per month for resale
- Generates approximately **$2,000/month profit**

> "I send 200 messages per day vs. ~10 natively using Facebook alone... while staying under Facebook's detection limits." — GeeLark User

### Is it legal to scrape Facebook marketplace ?

Our scrapers are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our scrapers, when used for ethical purposes by Apify users, are safe.
However, you should be aware that your results could contain personal data. Personal data is protected by the [GDPR](https://docs.apify.com/academy/get-most-of-actors/actor-readme#:~:text=protected%20by%20the-,GDPR,-in%20the%20European) in the European Union and by other regulations around the world.
You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers. You can also read our blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/)

### Your feedback

We’re always working on improving the performance of our Actors. So if you’ve got any technical feedback for this scraper or simply found a bug, please create an issue on the actor’s [Issues](https://console.apify.com/actors/Y0QGH7cuqgKtNbEgt/issues) tab in Apify Console

For additional information you can email us at <heycuriouscoder@gmail.com>

# Actor input Schema

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

Search URLs (e.g. [marketplace search](https://www.facebook.com/marketplace/nyc/cars)) or individual listing URLs (e.g. https://www.facebook.com/marketplace/item/3195892660712281/). Open in incognito to verify accessibility. Optional if Filters are set.

## `searchKeyword` (type: `string`):

Search term for Marketplace listings (e.g. couch, used bike).

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

To avoid matching wrong locations with similar names use location in the format "City, State, Country" (e.g. "Los Angeles, California, United States", "Brooklyn, New York, United States"). Also supports postal codes. Resolved to exact coordinates via Facebook's location search. For full control, set Latitude/Longitude instead.

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

This is always km regardless of region: Facebook's UI may display miles in mile-using regions (e.g. the US), but it converts to km for the request (selecting 80 miles becomes radius=128). So to target 80 miles, enter 128. Combine with Location (city name / postal code) or Latitude/Longitude.

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

Center latitude for Filters-based searches. When set with Longitude, overrides the Location field (location name lookup is skipped). Ignored if you paste URLs above. Set Longitude too.

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

Center longitude for Filters-based searches. Use together with Latitude (and optionally Radius) to target an exact area; overrides Location when both coordinates are set. Ignored if you paste URLs above.

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

Order of the search results. Applies to Filters-based searches (ignored when you paste your own URLs).

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

Minimum listing price, in the searched location's local currency (e.g. a search in India filters in ₹). The currency follows the location, not the proxy region.

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

Maximum listing price, in the searched location's local currency (e.g. a search in India filters in ₹). The currency follows the location, not the proxy region.

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

Item condition(s) to include. Leave empty for any condition.

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

Only include listings posted within this window.

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

Filter by listing availability.

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

Filter by how the item is delivered.

## `getListingDetails` (type: `boolean`):

Scraper will visit details page and extract more information

## `getAllListingPhotos` (type: `boolean`):

When get listing details is enabled, fetch listing media (images). Set to false to skip media API calls and reduce requests by ~33%

## `strictFiltering` (type: `boolean`):

Exclude listings that are broad matches (outside location, similar items, etc.)

## `maxPagesPerUrl` (type: `integer`):

Maximum number of search pages to scrape per search URL.

## `untilDate` (type: `string`):

Scrape listings until this date (YYYY-MM-DD). Only works if Get listing details is enabled and search url is sorted by newest first or url contains `sortBy=creation_time_descend`

## `proxy` (type: `object`):

Set proxy country to your target marketplace region (e.g. US, IN, UK). Results depend on proxy region. Proxies are managed internally you only need to set proxy country in proxy input field.

## `cookies` (type: `string`):

Facebook cookies for authenticated scraping.

When provided, enables seller details scraping.

Requires logged-in session cookies (`c_user` and `xs`). Accepts **Header string** (`name1=value1; name2=value2`) or **JSON** export.

Concurrency is set to 1 and random delays are added when using cookies. Follow these steps to get the cookies: <ol> <li>Install [Cookie-Editor](https://chromewebstore.google.com/detail/cookie-editor/hlkenndednhfkekhgcdicdfddnkalmdm) chrome extension</li> <li> Login to your facebook account </li> <li> Click on the extension icon > Export > Header string <em>or</em> JSON </li> <li>Paste the copied contents here</li> </ol> <p> \<a href=https://youtu.be/YuKp9BlVgNM target=\_blank>\<img src=https://www.youtube.com/s/desktop/66e817d4/img/favicon\_32x32.png width=16px> Video - How to get cookies (0:14)</a>

## `onlyNewListings` (type: `boolean`):

Remember scraped search listings across runs and skip unchanged items before fetching their details. Listings are scraped again when their price, availability, or other visible search-result content changes.

## `cacheStorageId` (type: `string`):

Key-value store shared by monitoring runs. Defaults to facebook-marketplace-listing-cache when empty. Use a separate store for each independent search/workflow so listings from different keywords or locations do not share one cache and get skipped

## Actor input object example

```json
{
  "urls": [
    "https://www.facebook.com/marketplace/nyc/cars/"
  ],
  "sortBy": "",
  "daysSinceListed": "",
  "availability": "",
  "deliveryMethod": "",
  "getListingDetails": true,
  "getAllListingPhotos": true,
  "strictFiltering": false,
  "onlyNewListings": false
}
```

# 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/cars/"
    ],
    "searchKeyword": "",
    "location": "",
    "cookies": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("curious_coder/facebook-marketplace").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/cars/"],
    "searchKeyword": "",
    "location": "",
    "cookies": "",
}

# Run the Actor and wait for it to finish
run = client.actor("curious_coder/facebook-marketplace").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/cars/"
  ],
  "searchKeyword": "",
  "location": "",
  "cookies": ""
}' |
apify call curious_coder/facebook-marketplace --silent --output-dataset

```

## MCP server setup

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

```

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/Y0QGH7cuqgKtNbEgt/builds/7S10Tkkw5z5uLS8xg/openapi.json
