Back to Blog
API Reference

Facebook Marketplace API: Scrape Listings, Prices & Seller Data

May 19, 2026
7 min read
S
By SociaVault Team
facebook marketplacescraper apie-commercedata extraction

Facebook Marketplace API: Scrape Listings, Prices & Seller Data

TL;DR: As of May 2026, Facebook has no official Marketplace API — but SociaVault fills that gap with three production-ready endpoints covering location search, listing search, and item detail extraction. This guide covers every endpoint, real response shapes, and working code examples in JavaScript and Python for price tracking, product research, and lead generation.

Facebook Marketplace processes millions of listings daily across categories from furniture to vehicles to real estate. That data is enormously valuable — for resellers, researchers, real estate investors, and developers building price intelligence tools. The problem: Facebook provides zero official API access to Marketplace data.

SociaVault solves this with a maintained, structured API that returns clean JSON from three core endpoints. Here's everything you need to know.

The Three Facebook Marketplace Endpoints

EndpointURLPurpose
Location Search/v1/scrape/facebook-marketplace/location-searchResolve city names to coordinates
Search/v1/scrape/facebook-marketplace/searchSearch listings by keyword + location
Item/v1/scrape/facebook-marketplace/itemGet full details for a single listing

All endpoints require your API key in the x-api-key header.


Before you can search listings, you need geographic coordinates. The location search endpoint resolves a city name or zip code into a structured location object with the page_id, latitude, longitude, and city name that the search endpoint expects.

JavaScript

const response = await fetch(
  "https://api.sociavault.com/v1/scrape/facebook-marketplace/location-search?query=Austin%2C+TX",
  {
    headers: { "x-api-key": "YOUR_API_KEY" },
  },
);

const data = await response.json();
console.log(data.locations[0]);

Python

import requests

resp = requests.get(
    'https://api.sociavault.com/v1/scrape/facebook-marketplace/location-search',
    params={'query': 'Austin, TX'},
    headers={'x-api-key': 'YOUR_API_KEY'}
)

location = resp.json()['locations'][0]
print(location)

Response Shape

{
  "locations": [
    {
      "page_id": "110774405606108",
      "name": "Austin, Texas",
      "city": "Austin",
      "state": "Texas",
      "country": "US",
      "latitude": 30.2672,
      "longitude": -97.7431,
      "radius_km": 40
    }
  ]
}

The page_id, latitude, and longitude fields are what you pass into the search endpoint.


Endpoint 2: Search Listings

With coordinates in hand, you can search for any keyword across Marketplace listings in that area. The search endpoint supports filtering by price range, category, and radius.

JavaScript

const params = new URLSearchParams({
  query: "standing desk",
  latitude: "30.2672",
  longitude: "-97.7431",
  radius_km: "40",
  price_min: "50",
  price_max: "500",
});

const response = await fetch(
  `https://api.sociavault.com/v1/scrape/facebook-marketplace/search?${params}`,
  {
    headers: { "x-api-key": "YOUR_API_KEY" },
  },
);

const { listings, cursor } = await response.json();

Python

import requests

resp = requests.get(
    'https://api.sociavault.com/v1/scrape/facebook-marketplace/search',
    params={
        'query': 'standing desk',
        'latitude': 30.2672,
        'longitude': -97.7431,
        'radius_km': 40,
        'price_min': 50,
        'price_max': 500
    },
    headers={'x-api-key': 'YOUR_API_KEY'}
)

data = resp.json()
listings = data['listings']
cursor = data.get('cursor')  # use for pagination

Response Shape

{
  "listings": [
    {
      "id": "1234567890123456",
      "title": "Uplift V2 Standing Desk - 60x30",
      "price": {
        "amount": 350,
        "currency": "USD",
        "formatted_amount": "$350"
      },
      "primary_photo": {
        "url": "https://scontent.xx.fbcdn.net/v/...",
        "width": 720,
        "height": 720
      },
      "location": {
        "city": "Austin",
        "state": "TX",
        "latitude": 30.2891,
        "longitude": -97.7341
      },
      "delivery_types": ["local_pickup", "shipping"],
      "seller_id": "987654321",
      "listed_at": "2026-05-15T14:22:00Z"
    }
  ],
  "cursor": "eyJhZnRlciI6IjEyMzQ1Njc4OTAxMjM0NTYifQ==",
  "total_count": 47
}

Pagination

Pass the cursor value back as a query parameter to fetch the next page:

// Fetch all pages
async function getAllListings(query, lat, lng) {
  const results = [];
  let cursor = null;

  do {
    const params = new URLSearchParams({
      query,
      latitude: lat,
      longitude: lng,
    });
    if (cursor) params.set("cursor", cursor);

    const res = await fetch(
      `https://api.sociavault.com/v1/scrape/facebook-marketplace/search?${params}`,
      { headers: { "x-api-key": "YOUR_API_KEY" } },
    );
    const data = await res.json();

    results.push(...data.listings);
    cursor = data.cursor || null;

    // Respect rate limits
    await new Promise((r) => setTimeout(r, 500));
  } while (cursor);

  return results;
}

Endpoint 3: Item Details

Once you have a listing id from the search results, you can fetch the full item detail — including description, all photos, seller info, and product attributes.

JavaScript

const response = await fetch(
  "https://api.sociavault.com/v1/scrape/facebook-marketplace/item?id=1234567890123456",
  {
    headers: { "x-api-key": "YOUR_API_KEY" },
  },
);

const item = await response.json();

Python

resp = requests.get(
    'https://api.sociavault.com/v1/scrape/facebook-marketplace/item',
    params={'id': '1234567890123456'},
    headers={'x-api-key': 'YOUR_API_KEY'}
)

item = resp.json()

Response Shape

{
  "id": "1234567890123456",
  "title": "Uplift V2 Standing Desk - 60x30",
  "description": "Selling my Uplift V2 standing desk. Used for 18 months, excellent condition. Includes memory controller, anti-fatigue mat, and cable management tray. Reason for selling: moving to smaller apartment.",
  "price": {
    "amount": 350,
    "currency": "USD",
    "formatted_amount": "$350"
  },
  "attributes": [
    { "label": "Condition", "value": "Used - Good" },
    { "label": "Category", "value": "Furniture" },
    { "label": "Brand", "value": "Uplift" }
  ],
  "photos": [
    {
      "url": "https://scontent.xx.fbcdn.net/v/photo1.jpg",
      "width": 1080,
      "height": 1080
    },
    {
      "url": "https://scontent.xx.fbcdn.net/v/photo2.jpg",
      "width": 1080,
      "height": 1080
    }
  ],
  "seller": {
    "id": "987654321",
    "name": "Sarah M.",
    "profile_url": "https://www.facebook.com/marketplace/profile/987654321",
    "member_since": "2019",
    "rating": 4.8,
    "reviews_count": 23,
    "response_rate": "95%"
  },
  "location": {
    "city": "Austin",
    "state": "TX",
    "zip": "78701"
  },
  "delivery_types": ["local_pickup"],
  "listed_at": "2026-05-15T14:22:00Z",
  "category": "furniture"
}

Use Cases

1. Price Tracking

Monitor price changes for specific product categories over time. Store listing IDs and prices in a database, re-fetch weekly, and alert when prices drop below a threshold.

import sqlite3, requests, time

def track_prices(query, lat, lng, api_key):
    conn = sqlite3.connect('marketplace.db')
    conn.execute('''CREATE TABLE IF NOT EXISTS listings
                    (id TEXT PRIMARY KEY, title TEXT, price INTEGER,
                     city TEXT, fetched_at TEXT)''')

    resp = requests.get(
        'https://api.sociavault.com/v1/scrape/facebook-marketplace/search',
        params={'query': query, 'latitude': lat, 'longitude': lng},
        headers={'x-api-key': api_key}
    )

    for listing in resp.json()['listings']:
        conn.execute(
            'INSERT OR REPLACE INTO listings VALUES (?,?,?,?,datetime("now"))',
            (listing['id'], listing['title'],
             listing['price']['amount'], listing['location']['city'])
        )
    conn.commit()

2. Product Research

Compare prices for the same item across multiple cities to identify arbitrage opportunities. See the full guide at /blog/facebook-marketplace-product-research.

3. Lead Generation

Real estate agents and service businesses use Marketplace data to identify motivated buyers and sellers. People listing furniture and appliances are often moving — a strong signal for real estate leads. Full walkthrough at /blog/facebook-marketplace-lead-generation.


Comparison: DIY Scraping vs SociaVault API

FactorDIY ScrapingBrowser AutomationSociaVault API
Setup timeDays–weeksHours–daysMinutes
MaintenanceHigh (breaks often)MediumNone
ReliabilityLowMediumHigh
Structured dataManual parsingManual parsingClean JSON
Rate limit handlingManualManualBuilt-in
CostInfrastructure + timeInfrastructure + timePay-per-request

Frequently Asked Questions

Accessing publicly visible data is generally permissible under the Computer Fraud and Abuse Act (CFAA) as clarified by the hiQ v. LinkedIn ruling. SociaVault only accesses data that any unauthenticated user can see. Always use data responsibly and comply with applicable laws in your jurisdiction.

What are the rate limits?

Rate limits depend on your plan. Free tier: 100 requests/day. Starter: 1,000/day. Pro: 10,000/day. Enterprise: custom. The search endpoint returns up to 24 listings per page; use the cursor for pagination.

How do I paginate through all results?

Use the cursor field returned in each search response. Pass it as a cursor query parameter in your next request. When cursor is null or absent, you've reached the last page.

Which countries and regions are supported?

As of May 2026, the API supports Marketplace listings in the US, Canada, UK, Australia, and most of Western Europe. Coverage is expanding — check the docs for the current list.

How fresh is the data?

Listings are fetched in real time when you make a request. There is no caching layer — you always get the current state of Marketplace.

Can I get seller contact information?

The API returns publicly visible seller profile data including name, profile URL, rating, and response rate. Direct contact details (phone, email) are not exposed by Marketplace and are not available.


Get your free API key →

View API docs →

Found this helpful?

Share it with others who might benefit

Ready to Try SociaVault?

Start extracting social media data with our powerful API. No credit card required.