Skip to content

SocQAPI/facebook-marketplace-search-api

Repository files navigation

Facebook Marketplace Search API examples for SocQ

Facebook Marketplace Search API API documentation License: MIT Check examples

Search public Facebook Marketplace listings by keyword and coordinates, returning titles, prices, locations, images, status fields, and source URLs as normalized records.

Try Facebook Marketplace Search API · Get an API key · Documentation · All SocQ examples

Use cases

  • Local asking-price comparison: Compare normalized price amounts, currencies, titles, query context, and locations for similar public listings inside a defined search area.
  • Regional inventory and category research: Use category IDs, attributes, delivery types, availability fields, images, and location context to assemble a bounded local listing dataset.
  • Repeatable market snapshots: Retain listing IDs, prices, state fields, search_query, and collected_at to compare independently collected results for the same search over time.
  • Listing shortlist preparation: Use public listing URLs, titles, prices, images, and availability context to select records for item-level follow-up.

API behavior

  • query, latitude, and longitude are required; use Location Search when a place name must be converted to coordinates first.
  • results_limit defaults to 100 and accepts integers from 1 through 2,000.
  • Optional filters include radius, price range, sort order, delivery method, condition, listing age, and availability.
  • Search cards can omit descriptions, seller identity, precise coordinates, attributes, and creation times; treat missing fields defensively.

All requests use the shared asynchronous flow:

submit -> task_id -> poll task -> read every cursor page -> save results

Quick start

cp .env.example .env
export SOCQ_API_KEY="your-api-key"

Run the complete Node.js workflow:

cd node
npm start

Run the complete Python workflow:

python3 -m pip install -r python/requirements.txt
python3 python/main.py

Both examples load payload.example.json, retry transient API responses, wait for task completion, read every cursor page, and save a paginated public Marketplace listing dataset with price, location, media, and state context to output/results.json.

Never expose SOCQ_API_KEY in browser code, mobile apps, public repositories, screenshots, fixtures, or logs.

Request

POST https://api.socq.ai/v1/facebook-marketplace/search
Authorization: Bearer <SOCQ_API_KEY>
Content-Type: application/json
{
  "query": "bike",
  "latitude": 30.2677,
  "longitude": -97.7475,
  "results_limit": 100,
  "radius_km": 25,
  "availability": "available"
}

The submit response contains data.task_id. Poll the task endpoint until data.status becomes succeeded or failed, then continue with data.results.next_cursor while data.results.has_more is true.

Complete workflow example

The Node.js and Python programs implement the production-shaped happy path:

  1. Load and validate configuration.
  2. Submit the endpoint-specific payload.
  3. Retry rate-pressure and transient server responses with bounded backoff.
  4. Poll the asynchronous task with a ten-minute application timeout.
  5. Stop cleanly on a failed task and surface the public error message.
  6. Read all cursor pages instead of silently returning only the first page.
  7. Write a stable JSON artifact containing task metadata and normalized records.

Use the synthetic files in fixtures/ for tests and documentation. They do not contain customer, account, or production data.

Production notes

See docs/production-notes.md for validation, retry, timeout, pagination, deduplication, logging, and endpoint-specific guidance.

Responsible use and platform scope

  • Use only publicly accessible Facebook Marketplace locations, listing search results, item pages, and fields supported by the selected endpoint.
  • Do not use the examples to access private seller information, restricted listings, login-only surfaces, or authentication controls.
  • SocQ is not an official API of the represented social platform and is not affiliated with or endorsed by that platform.
  • Before production use, assess the laws, platform terms, privacy obligations, and retention requirements that apply to your organization and use case.
  • Collect only the fields needed for a defined purpose, restrict access, set retention periods, and support correction or deletion workflows where required.
  • Platform names and trademarks belong to their respective owners.

This section describes the public-data boundary; it is not legal advice or a guarantee that every use case is permitted in every jurisdiction.

Repository contents

Path Purpose
curl/request.md Copy-paste submit, poll, and pagination requests
node/index.mjs Complete Node.js workflow
python/main.py Complete Python workflow
payload.example.json Safe endpoint-specific request body
fixtures/ Synthetic submit and task response shapes
docs/production-notes.md Production integration guidance

Releases

Packages

Used by

Contributors

Languages