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

Better scraper for FB Marketplace

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

## Pricing

from $4.00 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Facebook Marketplace Scraper

Extract listings from Facebook Marketplace at scale — prices, titles, images, seller info, and more. Search any location, any category, without writing a single line of code.

### What it does

This Actor lets you scrape Facebook Marketplace search results and save them as structured data (JSON, CSV, Excel). Give it one or more search URLs, and it will collect every listing it finds.

Instead of reading text off the rendered page, it reads the same structured data Facebook's own app fetches to build the results feed. That means it isn't capped by what Facebook currently has rendered on screen — it keeps accumulating listings as you scroll, and each listing comes back with more fields (seller name, sold/pending status, delivery type) without needing to visit the listing page separately.

**Typical use cases:**
- Price research and market comparisons
- Inventory monitoring (check if specific items are available)
- Lead generation for resellers and flippers
- Academic research on secondhand markets
- Real estate and vehicle listing aggregation

---

### What you get

Every scraped listing includes all of the following — no extra requests needed:

| Field | Description |
|---|---|
| `title` | Listing title |
| `price` / `formattedPrice` | Numeric price and Facebook's displayed price string (e.g. "฿4,500") |
| `minPrice` / `maxPrice` | Price range for range-priced listings (e.g. real estate) |
| `location`, `city`, `state` | Location shown on the listing |
| `status` | `live`, `sold`, `pending`, or `hidden` |
| `deliveryTypes` | e.g. `["IN_PERSON"]`, `["SHIPPING"]` |
| `imageUrl` | Primary listing photo |
| `sellerName` / `sellerId` | Seller's display name and Facebook ID |
| `link` | Direct URL to the Facebook listing |

Enable **Fetch Listing Details** to additionally get:

| Field | Description |
|---|---|
| `postedAt` | Time posted (e.g. "2 hours ago") |
| `description` | Full item description |

---

### Before you start — important setup

Facebook Marketplace requires you to be logged in. This Actor authenticates using your browser session cookies. Follow the steps below carefully — skipping them is the #1 reason runs fail.

#### Step 1 — Create a dedicated Facebook account (strongly recommended)

**Do not use your personal Facebook account for scraping.** Facebook's security systems will detect unusual cookie activity and log you out, potentially flagging your account.

Instead:
1. Create a **new Facebook account** with a separate email address
2. Use it only for running this Actor
3. Let it "warm up" for a day or two before scraping — browse Marketplace manually a few times first

> This protects your personal account and gives you a stable, long-lived session for scraping.

#### Step 2 — Get your session cookies (using Chrome DevTools)

No extensions needed — this uses a tool built into every Chrome browser.

1. Open **Google Chrome** and go to [facebook.com](https://www.facebook.com)
2. Log in with your **dedicated scraping account**
3. Browse to [facebook.com/marketplace](https://www.facebook.com/marketplace) and click around a few listings — this makes the session look natural
4. Press **F12** to open Chrome DevTools
5. Click the **Console** tab
6. Paste the following code and press **Enter**:

```javascript
copy(
  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,
        };
      })
    )
  )
);
console.log("✅ Cookies copied to clipboard!");
````

7. You'll see `✅ Cookies copied to clipboard!` — the JSON is now in your clipboard
8. Paste it into the **Facebook Session Cookies** field in the Actor input

> ⚠️ **Do not close or refresh the Facebook tab after running this script.** Open a new tab for everything else. Navigating away from Facebook immediately after exporting can trigger a security check.

#### Step 3 — Verify your cookies contain the required values

Your cookies must include **both** of these:

- `c_user` — your Facebook user ID
- `xs` — your session token

If either is missing, the Actor will fail. Re-export your cookies and try again.

***

### How to build a search URL

Instead of typing a URL from scratch, use Facebook's own search:

1. Go to [facebook.com/marketplace](https://www.facebook.com/marketplace)
2. Search for what you want — use the filters (location, price range, category, condition)
3. Once the results load, **copy the URL from your browser address bar**
4. Paste it into the **Search URLs** field in the Actor

**Example URLs:**

```
## Search for iPhones in Bangkok
https://www.facebook.com/marketplace/bangkok/search/?query=iphone

## Cars under ฿300,000 in Bangkok  
https://www.facebook.com/marketplace/bangkok/vehicles/?maxPrice=300000

## Furniture in London
https://www.facebook.com/marketplace/london/search/?query=sofa&exact=false
```

You can add **multiple URLs** to scrape several searches in a single run.

***

### Input configuration

| Field | Required | Description |
|---|---|---|
| **Search URLs** | ✅ Yes | One or more Facebook Marketplace search URLs |
| **Max Listings Per Search** | No | How many results to collect per URL. Default: 50. Max: 1,000 |
| **Facebook Session Cookies** | ✅ Yes | Your exported browser cookies (see guide above) |
| **Proxy Configuration** | No | Defaults to Residential proxies — required for reliability |

***

### Keeping your session alive between runs

Facebook sessions expire over time — typically within a few days to a couple of weeks. To avoid interruptions:

- **Re-export your cookies** before each run if you haven't run the Actor in 3+ days
- **Don't log out** of your scraping account in the browser — this immediately invalidates the cookies
- **Keep the browser tab open** on Facebook when not in use; closing and reopening can sometimes trigger re-authentication
- If you get a `Session expired` or `Login required` error, your cookies have expired — re-export and update the input

***

### Proxy usage

This Actor defaults to **Residential proxies**, which are required for Facebook Marketplace. Datacenter proxies will be blocked almost immediately.

Residential proxy usage is charged separately based on traffic consumed. For most searches, expect roughly **50–150 MB per 1,000 listings**.

***

### Cost estimation

| Listings | Estimated cost |
|---|---|
| 50 (default) | ~$0.01–0.05 |
| 500 | ~$0.10–0.30 |
| 5,000 | ~$1.00–3.00 |

*Costs vary based on page load times, proxy usage, and how aggressively Facebook rate-limits the session.*

***

### Output example

```json
{
  "listing_id": "123456789",
  "title": "iPhone 13 Pro Max 256GB",
  "price": 28500,
  "formattedPrice": "฿28,500",
  "currency": "฿",
  "location": "Bangkok, Thailand",
  "status": "live",
  "deliveryTypes": ["IN_PERSON"],
  "imageUrl": "https://scontent.xx.fbcdn.net/v/...",
  "sellerName": "John D.",
  "link": "https://www.facebook.com/marketplace/item/123456789/"
}
```

`postedAt` and `description` are included too when **Fetch Listing Details** is enabled.

Results are available in the **Dataset** tab after the run. Download as **JSON, CSV, Excel, or XML**.

***

### Troubleshooting

**❌ Actor finishes instantly with no results**
→ Your cookies have expired or are invalid. Re-export them from your browser (Step 2 above) and update the input.

**❌ "Login required" or redirect to Facebook login page**
→ Same as above — re-export cookies. Make sure you're exporting from your logged-in scraping account.

**❌ My personal Facebook account got logged out after exporting cookies**
→ This is Facebook's security system detecting unusual activity. This is why we recommend a **dedicated scraping account** (Step 1). Create a separate account and use that instead.

**❌ Cookies exported but `c_user` or `xs` are missing**
→ Make sure you ran the console script while logged in to facebook.com (not messenger.com or another subdomain). Try logging out and back in, then re-exporting.

**❌ Actor runs but returns fewer results than expected**
→ Some searches genuinely have fewer than `Max Listings Per Search` results — the Actor stops early once scrolling stops surfacing new listings. If you expect more, Facebook may be rate-limiting the session; try re-exporting fresh cookies.

**❌ "Blocked" or proxy errors**
→ Make sure Residential proxies are selected (the default). Switch proxy country to match your search location for best results.

***

### Limitations

- **Facebook's Terms of Service:** Scraping Facebook is against their ToS. Use this tool responsibly and only for legitimate research or personal use.
- **Session expiry:** Cookies typically last a few days to two weeks. You will need to re-export them periodically.
- **Dynamic content:** Listings load as you scroll — the Actor handles this automatically, but very large result sets may take several minutes.
- **Location availability:** Marketplace is available in most countries but not all. Some categories and filters vary by region.
- **Rate limiting:** Aggressive scraping may trigger temporary listing limits from Facebook. Stay within reasonable result counts per session.

***

### Legal

This tool is provided for research and personal use. You are responsible for complying with Facebook's Terms of Service and applicable laws in your jurisdiction. The author does not condone scraping for spam, harassment, or any illegal purpose.

# Actor input Schema

## `searchUrls` (type: `array`):

One or more Facebook Marketplace search URLs to scrape.

How to build a search URL:

1. Go to facebook.com/marketplace
2. Use the search box and filters (location, category, price range, condition) to set up your search
3. Once the results load, copy the full URL from your browser address bar
4. Paste it into the URL field below and click Add

Example URLs:
https://www.facebook.com/marketplace/bangkok/search/?query=iphone
https://www.facebook.com/marketplace/london/search/?query=sofa
https://www.facebook.com/marketplace/newyork/vehicles/?maxPrice=10000

You can add multiple URLs to scrape several searches in a single run.

## `maxResultsPerSearch` (type: `integer`):

Maximum number of listings to collect per search URL.

Higher values use more proxy traffic and increase cost. Start with 20–50 to test your cookies are working before scaling up.

Estimated cost guide:

- 50 listings → ~$0.01–0.05
- 500 listings → ~$0.10–0.30
- 5,000 listings → ~$1.00–3.00

## `facebookCookies` (type: `array`):

Your Facebook browser session cookies. Required — Facebook Marketplace is not accessible without being logged in.

We 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.

How to get your cookies (no extension needed):

1. Open Chrome and log in to facebook.com with your scraping account
2. Browse to facebook.com/marketplace and click a few listings
3. Press F12 to open DevTools, then click the Console tab
4. Paste this snippet and press Enter:

copy(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 }; }))));

5. Your cookies are now copied to your clipboard as JSON — paste them into this field
6. Check the JSON includes both "c\_user" and "xs" entries; the Actor needs both to authenticate

⚠️ Security warning: Your cookies give full access to your Facebook account — treat them like a password. Never share your cookies publicly.

## `fetchListingDetails` (type: `boolean`):

Visit each listing's detail page to extract the full item description and time posted.

Seller 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.

⚠️ This loads one additional page per listing — it will significantly increase run time and proxy cost.

When enabled, add "description" and "postedAt" to the Output Fields list.

## `outputFields` (type: `array`):

Which fields to include in the output dataset. Remove any fields you don't need to keep your dataset clean.

All available fields (no extra requests needed):

- listing\_id — unique Facebook listing ID
- title — listing title
- price — numeric price (e.g. 4500)
- formattedPrice — price as Facebook displays it (e.g. "฿4,500")
- currency — currency symbol (e.g. ฿, $, €)
- minPrice / maxPrice — price range for range-priced listings (e.g. real estate), null otherwise
- imageUrl — product photo URL
- location — "City, State" shown on the card
- city / state — location split into parts
- status — "live", "sold", "pending", or "hidden"
- isSold / isPending / isLive — status as booleans
- deliveryTypes — e.g. \["IN\_PERSON"], \["SHIPPING"]
- sellerName — seller's display name
- sellerId — seller's Facebook ID
- link — direct URL to the listing
- searchUrl — the search URL that produced this listing
- searchIndex — index of the search URL in your input list
- scrape\_timestamp — ISO timestamp of when it was scraped

Only available when Fetch Listing Details is enabled:

- postedAt — time since listed (e.g. "3 hours ago")
- description — full item description

## `proxyConfig` (type: `object`):

Proxy settings. Residential proxies are required — Facebook blocks datacenter IPs. The default setting handles this automatically.

## Actor input object example

```json
{
  "searchUrls": [
    {
      "url": "https://www.facebook.com/marketplace/bangkok/search/?query=iphone"
    }
  ],
  "maxResultsPerSearch": 50,
  "facebookCookies": [
    {
      "name": "c_user",
      "value": "YOUR_FB_USER_ID"
    },
    {
      "name": "xs",
      "value": "YOUR_FB_XS_TOKEN"
    },
    {
      "name": "datr",
      "value": "YOUR_DATR_VALUE"
    }
  ],
  "fetchListingDetails": false,
  "outputFields": [
    "listing_id",
    "title",
    "price",
    "formattedPrice",
    "currency",
    "imageUrl",
    "location",
    "status",
    "sellerName",
    "link",
    "scrape_timestamp"
  ],
  "proxyConfig": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

All extracted marketplace listings. Download as JSON, CSV, or Excel from the Dataset tab.

# 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 = {
    "searchUrls": [
        {
            "url": "https://www.facebook.com/marketplace/bangkok/search/?query=iphone"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("bkktor/scraper-for-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 = { "searchUrls": [{ "url": "https://www.facebook.com/marketplace/bangkok/search/?query=iphone" }] }

# Run the Actor and wait for it to finish
run = client.actor("bkktor/scraper-for-facebook-marketplace").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchUrls": [
    {
      "url": "https://www.facebook.com/marketplace/bangkok/search/?query=iphone"
    }
  ]
}' |
apify call bkktor/scraper-for-facebook-marketplace --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=bkktor/scraper-for-facebook-marketplace",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Scraper for Facebook Marketplace",
        "description": "Better scraper for FB Marketplace",
        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
