Facebook Marketplace Scraper API: Search Listings by Location

by Simon Balfe·

A Facebook Marketplace scraper API lets an application search public listings by keyword and location, apply common filters, paginate results, and retrieve the details of a selected item.

CreatorCrawl provides three Marketplace endpoints:

TaskEndpoint
Find a locationGET /api/facebook/marketplace/location/search
Search listingsGET /api/facebook/marketplace/search
Get one listingGET /api/facebook/marketplace/item

Step 1: find Marketplace coordinates

Marketplace search requires a latitude and longitude. Resolve the user’s place name first:

curl "https://app.creatorcrawl.com/api/facebook/marketplace/location/search?query=Manchester" \
  -H "x-api-key: YOUR_API_KEY"

Choose the intended location from the returned results and keep its coordinates.

Step 2: search public listings

curl "https://app.creatorcrawl.com/api/facebook/marketplace/search?query=road%20bike&lat=53.4808&lng=-2.2426&radius_km=25&max_price=800" \
  -H "x-api-key: YOUR_API_KEY"

Supported filters include:

  • Search radius
  • Minimum and maximum price
  • Result count
  • Suggested, distance, newest, or price sorting
  • Local pickup or shipping
  • New and used condition bands
  • Date listed
  • Available, sold, or all listings
  • Cursor pagination

Pass the returned cursor back unchanged to request the next page.

import requests

url = "https://app.creatorcrawl.com/api/facebook/marketplace/search"
headers = {"x-api-key": "YOUR_API_KEY"}
params = {
    "query": "road bike",
    "lat": 53.4808,
    "lng": -2.2426,
    "radius_km": 25,
    "sort_by": "creation_time_descend",
}

seen = set()
for _ in range(3):
    response = requests.get(url, headers=headers, params=params, timeout=60)
    response.raise_for_status()
    data = response.json()["data"]

    for item in data.get("items", data.get("listings", [])):
        item_id = item.get("id")
        if item_id and item_id not in seen:
            seen.add(item_id)
            print(item.get("title"), item.get("price"), item.get("url"))

    cursor = data.get("cursor")
    if not cursor:
        break
    params["cursor"] = cursor

Deduplicate by listing ID. Facebook can return slightly different ordering between otherwise identical newest-first requests, so page-one position should not be treated as a stable identifier.

Step 3: retrieve listing details

Use either the item ID or its Marketplace URL:

curl "https://app.creatorcrawl.com/api/facebook/marketplace/item?id=ITEM_ID" \
  -H "x-api-key: YOUR_API_KEY"

Listing detail can include title, description, price, location, condition, photos, seller information, availability, listing-date text, and an exact creation time when Facebook exposes it.

Marketplace scraper use cases

Price monitoring

Run the same bounded query on a schedule, deduplicate by item ID, and store price changes. This works for vehicles, furniture, electronics, collectibles, or any category with repeatable search language.

New-listing alerts

Sort by creation time, scan several pages, and alert only on IDs not seen in prior runs. Keep the query narrow enough that the results remain relevant.

Local inventory research

Compare listing counts and asking prices across cities or radius bands. Keep location and currency context attached to every result.

Marketplace enrichment

Start from saved Marketplace URLs, fetch item details, and normalize them into an internal catalogue for review.

Important limits

This is read-only public data. It cannot contact sellers, create listings, access private conversations, or bypass Facebook account and content gates. Listing availability changes quickly, so recheck an item before acting on stored data.

See every supported path on the Facebook API hub, or create an API key to test a Marketplace query.

Explore CreatorCrawl

Try the free social media tools

Test transcripts, comments, profiles, channels, and tweets in your browser before moving to bulk API access.

More from the Blog

Takes 60 seconds

Add one line to your
MCP config. Ship today.

50 free credits. No card. Works with Claude, Cursor, Zed, and any MCP client.