Facebook Marketplace Scraper - Keyword Search avatar

Facebook Marketplace Scraper - Keyword Search

Pricing

from $3.31 / 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

from $3.31 / 1,000 listing scrapeds

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

16 days ago

Last modified

Share

Disclaimer: This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Meta Platforms, Inc. or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. "Facebook Marketplace" is referenced only to describe the publicly available website this Actor collects data from.

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.

Automate & schedule

Run this Actor on autopilot and pull results into your own stack:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });
const run = await client.actor('scrapesage/facebook-marketplace-scraper').call({
"searchQueries": [
"bicycle"
],
"cities": [
"nyc"
],
"maxResults": 14,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": [
"RESIDENTIAL"
]
}
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} records`);

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.

Data & lawful use

This Actor reads public listings and the seller information shown on them. Sellers on Facebook Marketplace include private individuals, so seller names, usernames and any contact details are personal data. If you are in the EU or UK you are the data controller for what you do with them: have a lawful basis, use the data for market research, price monitoring or lawful sourcing, honour deletion requests, and do not send private sellers unsolicited marketing.

Under Apify's Standard Actor Contract, which governs your use of this Actor, you are the controller of any personal data in your input and output and scrapesage acts only as your processor: that data is processed solely to run your job, written only to your own Apify storage, never used for any other purpose and never shared onward. If you need help with a data-subject request that involves this Actor's output, open an issue on the Issues tab.

Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Meta Platforms, Inc. or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.

"Facebook Marketplace" and any related marks are the property of their respective owners and are used here only in a descriptive, nominative sense - to identify the publicly accessible website from which this Actor collects data. This Actor is not an official Facebook Marketplace product, is not authorised or certified by Meta Platforms, Inc., and does not distribute Facebook Marketplace software. It collects only publicly available information; you are responsible for ensuring your use of that data complies with applicable laws, regulations and the terms of the source website.

Need help?

Open an issue on the Actor's Issues tab, or visit the Apify help center. Feature requests are welcome - this Actor is actively maintained.