Facebook Marketplace Scraper - Keyword Search
Pricing
$6.00 / 1,000 listing scrapeds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
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 + primaryListingPhotomarketplace_listing_title + listingTitlelistingUrl + itemUrllisting_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 actor | Typical incumbent | |
|---|---|---|
| Keyword + city search | ✅ | ❌ start URLs only |
| Category browse | ✅ | partial |
| 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"] }}
| Field | What it does |
|---|---|
searchQueries | Keywords - searched in every city you list |
cities | Marketplace locality slugs: nyc, la, chicago, houston, seattle… |
categories | Browse a category instead (bikes, furniture, electronics) - this lane also returns condition |
startUrls | Any marketplace search/category URL, used as-is |
condition | Keep only matching conditions (new, used, used like new) |
minPrice / maxPrice | Price window |
maxListingAgeDays | Freshness window |
excludeSold | Drop sold/pending (on by default) |
onlyNewListings | Monitor mode - a clean deal-alert feed |
Honest limits - read before you buy
conditioncomes from the category lane, not the search lane. Measured on 2026-07-30:conditionis 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, passcategories(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_sellerexists in the payload but is null for logged-out callers, and item detail pages are login-walled. Rather than hide that, every row carriessellerAvailable: 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
customTitlewhere 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)
| Event | Price | What it covers |
|---|---|---|
listing | $0.006 | One 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.
Related scrapers by scrapesage
- Facebook Reels Scraper - exact play counts and reaction breakdown
- Facebook Ad Library Scraper - Meta ad creatives and advertiser intel
- eBay Scraper - resale pricing comparison
- Craigslist Scraper - the other big local-classifieds source