Facebook Marketplace Scraper - Keyword Search avatar

Facebook Marketplace Scraper - Keyword Search

Pricing

$6.00 / 1,000 listing scrapeds

Go to Apify Store
Facebook Marketplace Scraper - Keyword Search

Facebook Marketplace Scraper - Keyword Search

Search Facebook Marketplace by keyword and city without login: price, condition, city and state, market area, listing age, sold and pending status, delivery types, strikethrough price and photo. Filter by price, condition and age, with monitor mode for new listings.

Pricing

$6.00 / 1,000 listing scrapeds

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Search Facebook Marketplace by keyword and city without a login and get a listing record that actually has the fields you need: price, condition, city and state, listing age, sold/pending status, delivery types, strikethrough price and the photo.

Why this one

The popular Marketplace scraper advertises 9 output fields. Look closely and it is four fields duplicated in snake_case and camelCase:

primary_listing_photo + primaryListingPhoto
marketplace_listing_title + listingTitle
listingUrl + itemUrl
listing_price.formatted_amount + listingPrice.formatted_amount

No condition. No location. No listing age. No sold status. And its input requires startUrls - there is no keyword search at all.

This actorTypical incumbent
Keyword + city search❌ start URLs only
Category browsepartial
Price (numeric and formatted)formatted only
Condition (new / used / used like new)✅ on category lane
City + state + market area
Listing age in days
Sold / pending status
Strikethrough (reduced) price
Delivery types
Price / condition / age filters
Monitor mode for new listings

What you get per listing

listingUrl · listingId · title · customTitle · priceAmount · priceFormatted · priceMinorUnits · strikethroughPrice · minPrice · maxPrice · condition · conditionRaw · city · state · marketArea · marketAreaId · photoUrl · hasVideo · categoryId · listedAt · listedTimestamp · listingAgeDays · isSold · isPending · isLive · deliveryTypes[] · listingTags[] · sellerAvailable · query · queryType · searchCity · scrapedAt

Input

{
"searchQueries": ["bicycle", "iphone"],
"cities": ["nyc", "la"],
"minPrice": 50,
"maxPrice": 500,
"maxListingAgeDays": 14,
"excludeSold": true,
"maxResults": 100,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
FieldWhat it does
searchQueriesKeywords - searched in every city you list
citiesMarketplace locality slugs: nyc, la, chicago, houston, seattle
categoriesBrowse a category instead (bikes, furniture, electronics) - this lane also returns condition
startUrlsAny marketplace search/category URL, used as-is
conditionKeep only matching conditions (new, used, used like new)
minPrice / maxPricePrice window
maxListingAgeDaysFreshness window
excludeSoldDrop sold/pending (on by default)
onlyNewListingsMonitor mode - a clean deal-alert feed

Honest limits - read before you buy

  • condition comes from the category lane, not the search lane. Measured on 2026-07-30: condition is populated on 14/14 listings from a category browse and 0/14 from a keyword search - Facebook simply omits the field from its search payload. If condition matters to you, pass categories (e.g. ["bikes"]) instead of, or as well as, searchQueries. Everything else (price, city, state, listing age, status, photo) is present on both lanes.
  • No seller identity, by design and by availability. marketplace_listing_seller exists in the payload but is null for logged-out callers, and item detail pages are login-walled. Rather than hide that, every row carries sellerAvailable: false. This is also the safest outcome for personal data - the actor returns marketplace inventory, not people.
  • No description field. The full item description lives on the login-walled detail page. The actor returns the listing title (and customTitle where Facebook sets one) rather than pretending to have a description.
  • ~14-24 listings per search page. Volume comes from breadth - more keywords and more cities - not deep pagination. A 6-keyword x 4-city run returned 222 listings.
  • Some searches return a shell. Facebook occasionally serves a logged-out shell; the actor retries on fresh IPs up to 4 times, then ends successfully with a clear status and $0 billed for that query.

Pricing (pay per event, no start fee)

EventPriceWhat it covers
listing$0.006One listing with price, condition (category lane), city/state, market area, listing age, status, delivery types and photo

Listings are billed before they are written, and listings removed by your filters are never billed.

Use with AI assistants (MCP)

Works as an LLM tool via the Apify MCP server - ask an assistant for "used bikes under $300 in Chicago listed this week" and it can call this actor directly.

Agent-ready: autonomous payments (x402 & Skyfire)

This actor is agent-ready — AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:

  • x402 — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server — no account, no API key.
  • Skyfire — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

Integrations

Make, Zapier, Slack, Google Drive, Airbyte, GitHub, the Apify API, Schedules and Webhooks.

Monitor mode

onlyNewListings: true remembers what it has already returned for that query set and emits only new listings - pair it with Apify Schedules for a deal-alert feed that never repeats itself.

FAQ

Do I need a login or cookies? No.

Why is condition empty? You searched by keyword. Facebook only ships condition on the category lane - see the limits section, with the measured numbers.

Can I get the seller's name? No - it is null for logged-out callers and the detail page requires a login. Every row says so via sellerAvailable.

How do I find city slugs? They are the segment in a Marketplace URL: facebook.com/marketplace/nyc/...nyc.