# Facebook Marketplace API (facebook.marketplace)

- Canonical page: https://everyinfra.com/en/facebook-api/marketplace
- Endpoint: POST https://api.everyinfra.com/api/v1/social with {"platform": "facebook", "action": "marketplace", "params": {...}}
- Price: $0.001389 per call ($1.39 per 1,000 requests); failed calls and empty results are not charged
- Returns: list, default 20, max 200 per call
- Mode: sync; add "mode": "async" for slow tasks

Facebook Marketplace looks up listings for a product `keyword` in one Marketplace city and returns each listing's title in `name`, its `price` and `currency`, the `city`, the item's `condition`, the main image, the publish time and a link. It shows what people sell locally and at what asking prices, which resellers, pricing analysts and local retailers use for second-hand price research, for sizing local supply of a product, or for comparing how one item is priced from city to city.

Set the city with `location`, the city slug used in Marketplace links, such as nyc; it is not a street address, and the search runs in nyc when you leave it out. `keyword` can also be a full Marketplace search URL, in which case that URL's own settings apply and `location` is ignored. `price` is a bare number, so read `currency` on the same row, and expect `city` in the platform's own language, without normalization.

## Health

- Live health (24h percent, hourly and daily trends): https://api.everyinfra.com/api/v1/social/availability?platform=facebook&action=marketplace

## Parameters

| name | type | required | default | description |
|---|---|---|---|---|
| keyword | not declared | yes | not declared | Specifies the search query for distinct platform endpoints. For search, it searches public posts; for ads, it accepts ad keywords or direct Ad Library and Page URLs; for marketplace, it accepts item search terms or complete Marketplace search URLs. Each action queries a different dataset rather than returning the same results under different field names. |
| location | not declared | no | not declared | Specifies the city path identifier for marketplace, such as nyc (defaults to nyc). It does not accept free-form street addresses. If keyword contains a complete Marketplace URL, that URL takes precedence and location is ignored. |
| limit | integer (1–200) | no | 20 | The most rows to return in this call, an integer from 1 to 200. The default applies when you leave it out, and a call can return fewer rows. Larger values return 422 before any charge. |

## Response fields (items in `results`)

| field | meaning |
|---|---|
| id | The record's unique ID on the platform. Unique only within one platform; IDs can repeat across platforms. |
| url | Link to the record on the platform. |
| name | Name of the object itself, for account, product and business capabilities. |
| price | Price as a number without a currency symbol; see currency. |
| currency | Currency code of the price (for example CNY, USD). If price is present but currency is null, do not assume a currency. |
| city | City name in the platform's language, not normalized. |
| state | platform-native meaning |
| condition | platform-native meaning |
| image_url | Image link. Capabilities with several images may return an image_urls array. |
| posted_at | Publish time in ISO 8601, UTC (for example 2026-08-07T12:34:56+00:00). Non-standard strings from the platform are passed through as is, so parse defensively. null means the platform does not disclose it. |
| platform | Source platform identifier, the same as platform in the request (for example xiaohongshu, tiktok). |

## Example

```bash
curl -X POST 'https://api.everyinfra.com/api/v1/social' \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "platform": "facebook",
  "action": "marketplace",
  "params": {
    "keyword": "coffee"
  }
}'
```

```python
import os
import requests

response = requests.post(
    "https://api.everyinfra.com/api/v1/social",
    headers={"Authorization": f"Bearer {os.environ['EVERYINFRA_API_KEY']}"},
    json={
        "platform": "facebook",
        "action": "marketplace",
        "params": {
            "keyword": "coffee",
        },
    },
    timeout=120,
)
print(response.status_code)
print(response.json())
```

## Response example

Real response to the example request above, captured 2026-09-26T08:56:04Z. `results` and `count` are real with personal information (names, handles, avatars, profile links, contact details) removed; the list keeps the first 2 of 20. `id`, `billing` and `quota` differ on every call, so only their shape is shown.

```text
{
  "id": "req_…",
  "platform": "facebook",
  "action": "marketplace",
  "results": [
    {
      "id": "•••",
      "url": "https://www.facebook.com/marketplace/item/1397900569221956",
      "name": "Cooper’s Coffee beans",
      "price": "15.00",
      "city": "Brooklyn",
      "state": "NY",
      "image_url": "https://scontent-dfw6-2.xx.fbcdn.net/v/t39.84726-6/796439990_1610692394038073_2004419954068794895_n.jpg?stp=c0.43.261.261a_dst-jpg_p261x260_tt6&_nc_cat=109&ccb=1-7&_nc_sid=92e707&_nc_ohc=U0AcUFUIaGUQ7kNvwGcaEge&_nc_oc=AdqnUNwPMcOnYed1UYcPib3Fv648ODglqYlcUbuIASkyeEsdullVJrXtq3GqU7…",
      "platform": "facebook"
    },
    {
      "id": "•••",
      "url": "https://www.facebook.com/marketplace/item/27339435099065922",
      "name": "Coffee",
      "price": "2.00",
      "city": "Lyndhurst",
      "state": "NJ",
      "image_url": "https://scontent-dfw6-1.xx.fbcdn.net/v/t39.84726-6/808176602_1559325292043996_1043941526513956246_n.jpg?stp=c0.43.261.261a_dst-jpg_p261x260_tt6&_nc_cat=103&ccb=1-7&_nc_sid=92e707&_nc_ohc=qlChSijkPf4Q7kNvwHtTFaW&_nc_oc=AdpAWkgxEOQV-FjosxDHaTdJcGMoryZEC3da8NcXYB7Cn0OpUURph8OvIR4M1K…",
      "platform": "facebook"
    }
  ],
  "count": 20,
  "billing": {
    "charged": …,
    "charged_usd": …,
    "balance_after_usd": …,
    …
  },
  "quota": { … }
}
```

## FAQ

### How do I choose the city to search?

Pass the city slug from Marketplace links as `location`, such as nyc; it is an identifier, not a free-text street address. Without `location`, Facebook Marketplace searches nyc. If you pass a complete Marketplace search URL as `keyword` instead, the settings in that URL apply and `location` is not used.

### How should I read `price` and `currency`?

`price` is a number without a currency symbol, and `currency` holds the currency code for the same listing. When `price` is present but `currency` is null, do not assume a currency. Convert listings to one currency before you compare asking prices across cities, and group by `condition` so items in different condition are not averaged together.

### Is Marketplace the same as Facebook Search or Ads?

No. Facebook Search, Ads and Marketplace cover different scopes, and they are not one result set with different fields. Facebook Search returns public posts for a keyword, Facebook Ads returns ad library results for an ad keyword or a library or page URL, and Facebook Marketplace returns product listings for an item term or a Marketplace search URL.

## Also

- Capability catalog (no key): https://api.everyinfra.com/api/v1/social/catalog?platform=facebook
- OpenAPI: https://everyinfra.com/openapi.json · Agents guide: https://everyinfra.com/agents.md
