Scraper for Facebook Marketplace
Pricing
from $4.00 / 1,000 results
Scraper for Facebook Marketplace
Pricing
from $4.00 / 1,000 results
You can access the Scraper for Facebook Marketplace programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in Integrations settings in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "0.0", "x-build-id": "Hg9jaAnwkk2SARy5O" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/bkktor~scraper-for-facebook-marketplace/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-bkktor-scraper-for-facebook-marketplace", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } }, "/acts/bkktor~scraper-for-facebook-marketplace/runs": { "post": { "operationId": "runs-sync-bkktor-scraper-for-facebook-marketplace", "x-openai-isConsequential": false, "summary": "Executes an Actor and returns information about the initiated run in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/runsResponseSchema" } } } } } } }, "/acts/bkktor~scraper-for-facebook-marketplace/run-sync": { "post": { "operationId": "run-sync-bkktor-scraper-for-facebook-marketplace", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } } }, "components": { "schemas": { "inputSchema": { "type": "object", "required": [ "searchUrls" ], "properties": { "searchUrls": { "title": "Search URLs", "type": "array", "description": "One or more Facebook Marketplace search URLs to scrape.\n\nHow to build a search URL:\n1. Go to facebook.com/marketplace\n2. Use the search box and filters (location, category, price range, condition) to set up your search\n3. Once the results load, copy the full URL from your browser address bar\n4. Paste it into the URL field below and click Add\n\nExample URLs:\nhttps://www.facebook.com/marketplace/bangkok/search/?query=iphone\nhttps://www.facebook.com/marketplace/london/search/?query=sofa\nhttps://www.facebook.com/marketplace/newyork/vehicles/?maxPrice=10000\n\nYou can add multiple URLs to scrape several searches in a single run.", "items": { "type": "object", "required": [ "url" ], "properties": { "url": { "type": "string", "title": "URL of a web page", "format": "uri" } } } }, "maxResultsPerSearch": { "title": "Max Listings Per Search", "minimum": 1, "maximum": 1000, "type": "integer", "description": "Maximum number of listings to collect per search URL.\n\nHigher values use more proxy traffic and increase cost. Start with 20–50 to test your cookies are working before scaling up.\n\nEstimated cost guide:\n- 50 listings → ~$0.01–0.05\n- 500 listings → ~$0.10–0.30\n- 5,000 listings → ~$1.00–3.00", "default": 50 }, "facebookCookies": { "title": "Facebook Session Cookies", "type": "array", "description": "Your Facebook browser session cookies. Required — Facebook Marketplace is not accessible without being logged in.\n\nWe strongly recommend using a dedicated Facebook account created only for scraping, not your personal account — exporting cookies from a personal account can trigger Facebook's security checks and log you out.\n\nHow to get your cookies (no extension needed):\n1. Open Chrome and log in to facebook.com with your scraping account\n2. Browse to facebook.com/marketplace and click a few listings\n3. Press F12 to open DevTools, then click the Console tab\n4. Paste this snippet and press Enter:\n\ncopy(JSON.parse(JSON.stringify(document.cookie.split(\"; \").map(c => { const [name, ...val] = c.split(\"=\"); return { name: name.trim(), value: val.join(\"=\"), domain: \".facebook.com\", path: \"/\", httpOnly: false, secure: true }; }))));\n\n5. Your cookies are now copied to your clipboard as JSON — paste them into this field\n6. Check the JSON includes both \"c_user\" and \"xs\" entries; the Actor needs both to authenticate\n\n⚠️ Security warning: Your cookies give full access to your Facebook account — treat them like a password. Never share your cookies publicly." }, "fetchListingDetails": { "title": "Fetch Listing Details", "type": "boolean", "description": "Visit each listing's detail page to extract the full item description and time posted.\n\nSeller name, price, and sold/pending status are already included for every listing without this — they come from the search results themselves. Only enable this if you specifically need the description or posted time.\n\n⚠️ This loads one additional page per listing — it will significantly increase run time and proxy cost.\n\nWhen enabled, add \"description\" and \"postedAt\" to the Output Fields list.", "default": false }, "outputFields": { "title": "Output Fields", "type": "array", "description": "Which fields to include in the output dataset. Remove any fields you don't need to keep your dataset clean.\n\nAll available fields (no extra requests needed):\n- listing_id — unique Facebook listing ID\n- title — listing title\n- price — numeric price (e.g. 4500)\n- formattedPrice — price as Facebook displays it (e.g. \"฿4,500\")\n- currency — currency symbol (e.g. ฿, $, €)\n- minPrice / maxPrice — price range for range-priced listings (e.g. real estate), null otherwise\n- imageUrl — product photo URL\n- location — \"City, State\" shown on the card\n- city / state — location split into parts\n- status — \"live\", \"sold\", \"pending\", or \"hidden\"\n- isSold / isPending / isLive — status as booleans\n- deliveryTypes — e.g. [\"IN_PERSON\"], [\"SHIPPING\"]\n- sellerName — seller's display name\n- sellerId — seller's Facebook ID\n- link — direct URL to the listing\n- searchUrl — the search URL that produced this listing\n- searchIndex — index of the search URL in your input list\n- scrape_timestamp — ISO timestamp of when it was scraped\n\nOnly available when Fetch Listing Details is enabled:\n- postedAt — time since listed (e.g. \"3 hours ago\")\n- description — full item description", "default": [ "listing_id", "title", "price", "formattedPrice", "currency", "imageUrl", "location", "status", "sellerName", "link", "scrape_timestamp" ] }, "proxyConfig": { "title": "Proxy Configuration", "type": "object", "description": "Proxy settings. Residential proxies are required — Facebook blocks datacenter IPs. The default setting handles this automatically.", "default": { "useApifyProxy": true, "apifyProxyGroups": [ "RESIDENTIAL" ] } } } }, "runsResponseSchema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "id": { "type": "string" }, "actId": { "type": "string" }, "userId": { "type": "string" }, "startedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "finishedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "status": { "type": "string", "example": "READY" }, "meta": { "type": "object", "properties": { "origin": { "type": "string", "example": "API" }, "userAgent": { "type": "string" } } }, "stats": { "type": "object", "properties": { "inputBodyLen": { "type": "integer", "example": 2000 }, "rebootCount": { "type": "integer", "example": 0 }, "restartCount": { "type": "integer", "example": 0 }, "resurrectCount": { "type": "integer", "example": 0 }, "computeUnits": { "type": "integer", "example": 0 } } }, "options": { "type": "object", "properties": { "build": { "type": "string", "example": "latest" }, "timeoutSecs": { "type": "integer", "example": 300 }, "memoryMbytes": { "type": "integer", "example": 1024 }, "diskMbytes": { "type": "integer", "example": 2048 } } }, "buildId": { "type": "string" }, "defaultKeyValueStoreId": { "type": "string" }, "defaultDatasetId": { "type": "string" }, "defaultRequestQueueId": { "type": "string" }, "buildNumber": { "type": "string", "example": "1.0.0" }, "containerUrl": { "type": "string" }, "usage": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "integer", "example": 1 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 } } }, "usageTotalUsd": { "type": "number", "example": 0.00005 }, "usageUsd": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "number", "example": 0.00005 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for Scraper for Facebook Marketplace from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: