UnitBytes Logo
UnitBytes Web Data APIs
Home / Blog / Tutorials & Guides
Tutorials & Guides 9 min read 2026-11-02

How to Scrape Facebook Marketplace Seller Profiles, Active/Sold Inventory & Detect Undisclosed Dealers (2026 Guide)

How to extract Facebook Marketplace seller profiles (exact join date, 5-star ratings, review counts, vanity URLs), unmask undisclosed car dealers ('curbstoners') and real estate brokers posing as private owners, and discover active + recently sold listings starting from any Marketplace Item URL or ID.

UnitBytes
UnitBytes
Autonomous Web Data Intelligence Labs
How to Scrape Facebook Marketplace Seller Profiles, Active/Sold Inventory & Detect Undisclosed Dealers (2026 Guide)

When an auto dealership street-purchase desk, real estate acquisition team, or marketplace fraud analyst evaluates a listing on Facebook Marketplace, the single listing page only tells half the story.

A vehicle listing titled "2019 Toyota Tacoma TRD Off-Road — Selling My Personal Truck" might carry a "PRIVATE_SELLER" badge on the surface—yet behind that listing, the poster actually has 46 active vehicles and 9 recently sold cars spread across neighboring towns. Conversely, a real estate investor searching for direct For-Sale-By-Owner (FSBO) homes or private landlords wastes hours messaging accounts that turn out to be unlicensed leasing agents or property wholesalers managing 30+ listings.

The Seller Visibility Problem on Facebook Marketplace: Manually clicking through seller profiles one by one in a browser takes hours and gives your acquisition team no structured way to filter out undisclosed dealers, compare active vs. sold inventory counts, or export clean seller records to Excel or your CRM.

In this guide, we show how to use the Facebook Marketplace Seller Profile & Inventory Scraper to extract seller profiles, star ratings, account creation dates, dealer/broker classifications, and up to 100 active and recently sold listings per seller from any Facebook Marketplace Item URL or Item ID.


1. Four Core Use Cases for Seller & Inventory Data#

Why do automotive acquisition groups, real estate teams, and recommerce platforms enrich listing feeds with seller-level catalogs?

1. Unmasking Disguised Car Dealers ("Curbstoners") Posing as Private Owners

Unlicensed car flippers and small independent lots routinely list inventory under personal Facebook profiles (vehicle_seller_type: "PRIVATE_SELLER") to attract private-party buyers. By inspecting the seller's active and sold vehicle counts, you can immediately see whether the seller is offloading 1 personal commuter car or operating a 40-car flipping operation.

2. Separating Direct Homeowners & Landlords from Real Estate Brokers

Real estate buyers, SFR acquisition funds, and apartment locators looking for direct owner/landlord deals (FSBO / FRBO) frequently run into leasing agents and wholesalers disguised as private posters. Auditing the seller's active and leased property listings reveals their full portfolio before your team reaches out.

3. Distinguishing Household Moving Sales from Commercial Flippers

Every seller record includes inferred_seller_tier (PRIVATE_INDIVIDUAL, MULTI_ITEM_FLIPPER, HIGH_VOLUME_DEALER) and is_undisclosed_dealer (true / false), helping your team separate genuine private individuals from commercial vehicle dealers, property brokers, and high-volume liquidators.

4. Auditing Competitor Dealership Lots & Sold Turn Velocity

Instead of manually checking rival dealerships or equipment resellers one by one, pass a listing URL from each seller to extract their active catalog (active_listings) alongside their recently sold history (sold_listings)—including current asking prices, strikethrough price drops (original_price), and vehicle mileage subtitles.


2. Input Parameters & Single-Charge Deduplication#

ParameterTypeDefaultDescription
start_urlsarrayPrefilledOne or more Facebook Marketplace Item URLs (https://www.facebook.com/marketplace/item/<id>/).
item_idsarrayOptionalOptional list of numeric Facebook Marketplace Item IDs (164026455XXXXXX) or Item URLs.
include_soldbooleantrueInclude recently sold / out-of-stock listings belonging to each seller.
deep_paginationbooleantrueEnable extended catalog extraction (up to 100 listings per seller).
max_items_per_sellerinteger100Maximum number of listings (active + sold) to return per seller (1–100).

Single Charge Per Seller Per Run

When you pass a batch of listing URLs from a city search into Facebook Marketplace Seller Profile & Inventory Scraper, multiple listings may belong to the same seller. Each unique seller is returned and billed only once per run.


3. Complete Output Schema & Realistic Accuracy Benchmarks#

We believe in strict, data-driven transparency so engineering and operations teams know the exact capabilities and realistic boundaries before integrating:

Data Category / Output FieldsObserved Fill / Accuracy RateOperational Notes & Realistic Boundaries
Seller Identity & Join Date (seller_id, seller_name, join_date_iso, join_time, marketplace_profile_url)~98–100% (on active items)Extracted whenever the seed listing is active and publicly accessible on Facebook Marketplace. Deleted or expired seed items return a structured error.
Listing Card Fields (item_id, url, title, price, numeric_price, status, city, state, image_url)~98–100%Populated for every item inside active_listings and sold_listings. Optional fields like original_price (strikethrough markdown) and subtitles (e.g. "21K miles") are included whenever present on the card.
Active & Sold Inventory Completeness (active_listings, sold_listings)~75–95% typical coverage (Up to 100 items/seller)Returns up to 100 active and recently sold listings per seller (max_items_per_seller: 1–100), with your seed item guaranteed at index 0 (is_seed_item: true). Platform visibility rules mean 100% exhaustive historical recall is never guaranteed.
Dealer / Broker / Flipper Classification (inferred_seller_tier, is_undisclosed_dealer)~85–92%Automated behavioral and catalog classification—designed for lead scoring and filtering rather than legal licensing verification.
Seller Star Ratings & Review Counts (seller_rating, seller_review_count, combined_rating)100% when public (~50–65% of sellers overall)Populated whenever public 5-star ratings are displayed on the seller's profile (null when a seller has too few ratings or seller_ratings_are_private: true). Outputs rating aggregates, not written review text.
Personal Profile Vanity URL (personal_vanity_url, personal_vanity_handle)~55–65% of sellersPopulated when a public Facebook profile handle (https://www.facebook.com/<handle>/) is exposed on the account.
Input Format: Pass any Facebook Marketplace Item URL (https://www.facebook.com/marketplace/item/<id>/) or numeric Item ID (164026455XXXXXX) from the target seller.

4. Sample Seller Profile & Inventory Output JSON#

Every dataset item includes flat top-level summary columns (for 1-click Excel/CSV export and the Apify Dataset Table view) plus nested seller, active_listings, and sold_listings arrays:

json
{
  "seed_item_id": "164026455XXXXXX",
  "seed_item_url": "https://www.facebook.com/marketplace/item/164026455XXXXXX/",
  "seller_id": "100000807XXXXXX",
  "seller_name": "Alex M. [Masked]",
  "inferred_seller_tier": "HIGH_VOLUME_DEALER",
  "is_undisclosed_dealer": true,
  "active_listings_count": 46,
  "sold_listings_count": 9,
  "total_listings_count": 55,
  "join_date_iso": "2010-03-02",
  "seller_rating": 3.9,
  "seller_review_count": 21,
  "combined_rating": 4.0,
  "combined_review_count": 22,
  "personal_vanity_url": "https://www.facebook.com/alex.m.masked/",
  "marketplace_profile_url": "https://www.facebook.com/marketplace/profile/100000807XXXXXX/",
  "city_display_name": "Hempstead, NY",
  "seller": {
    "seller_id": "100000807XXXXXX",
    "marketplace_user_profile_id": "146716534XXXXXX",
    "seller_name": "Alex M. [Masked]",
    "join_time": 1267490749,
    "join_date_iso": "2010-03-02",
    "join_year": 2010,
    "seller_rating": 3.9,
    "seller_review_count": 21,
    "combined_rating": 4.0,
    "combined_review_count": 22,
    "seller_ratings_are_private": false,
    "marketplace_profile_url": "https://www.facebook.com/marketplace/profile/100000807XXXXXX/",
    "personal_vanity_url": "https://www.facebook.com/alex.m.masked/",
    "personal_vanity_handle": "alex.m.masked",
    "seller_avatar_url": "https://scontent.xx.fbcdn.net/v/t39.30808-1/masked_avatar_160x160.jpg",
    "primary_city": "Hempstead",
    "primary_state": "NY",
    "city_display_name": "Hempstead, NY",
    "is_seller_business_onboarded": false,
    "should_show_business_seller_label": false,
    "vehicle_seller_type": "PRIVATE_SELLER",
    "dealership_name": null,
    "inferred_seller_tier": "HIGH_VOLUME_DEALER",
    "is_undisclosed_dealer": true
  },
  "active_listings": [
    {
      "item_id": "164026455XXXXXX",
      "url": "https://www.facebook.com/marketplace/item/164026455XXXXXX/",
      "title": "2026 BMW X3 xDrive",
      "price": "$43,374",
      "numeric_price": 43374.0,
      "original_price": null,
      "status": "ACTIVE",
      "is_live": true,
      "is_sold": false,
      "is_pending": false,
      "city": "Hempstead",
      "state": "NY",
      "image_url": "https://scontent.xx.fbcdn.net/v/t39.30808-6/masked_listing_active_1.jpg",
      "subtitles": [
        "21K miles"
      ],
      "seller_id": "100000807XXXXXX",
      "is_seed_item": true
    }
  ],
  "sold_listings": [
    {
      "item_id": "161709995XXXXXX",
      "url": "https://www.facebook.com/marketplace/item/161709995XXXXXX/",
      "title": "2012 Ford Escape XLT",
      "price": "$4,600",
      "numeric_price": 4600.0,
      "original_price": "$5,200",
      "status": "SOLD",
      "is_live": false,
      "is_sold": true,
      "is_pending": false,
      "city": "Massapequa Park",
      "state": "NY",
      "image_url": "https://scontent.xx.fbcdn.net/v/t39.30808-6/masked_listing_sold_1.jpg",
      "subtitles": [
        "118K miles"
      ],
      "seller_id": "100000807XXXXXX",
      "is_seed_item": false
    }
  ]
}

5. Two-Stage Python Pipeline: City Vehicle Discovery $\rightarrow$ Curbstoner & Seller Audit#

Here is how automotive acquisition teams chain Facebook Marketplace Vehicle Scraper (Stage 1: fast city discovery) into Facebook Marketplace Seller Profile & Inventory Scraper (Stage 2: deep seller & dealer verification) using apify-client:

python
from apify_client import ApifyClient
import pandas as pd

client = ApifyClient("YOUR_APIFY_API_TOKEN")

# Stage 1: Discover recent vehicle listings in your target metro area
discovery_run = client.actor("unitbytes/facebook-marketplace-vehicle-scraper").call(
    run_input={
        "search_query": "Toyota Camry",
        "city_slug": "losangeles",
        "min_price": 5000,
        "max_price": 24000,
        "max_results": 25,
        "scrape_details": True,
    }
)

discovered_items = client.dataset(discovery_run["defaultDatasetId"]).list_items().items
seed_urls = [{"url": item["url"]} for item in discovered_items if item.get("url")]

# Stage 2: Audit the sellers behind those listings to filter out undisclosed dealers
seller_run = client.actor("unitbytes/facebook-marketplace-seller-scraper").call(
    run_input={
        "start_urls": seed_urls[:10],
        "include_sold": True,
        "deep_pagination": True,
        "max_items_per_seller": 50,
    }
)

sellers = client.dataset(seller_run["defaultDatasetId"]).list_items().items

# Separate genuine private owners from undisclosed car dealers / curbstoners
private_owners = [s for s in sellers if s.get("inferred_seller_tier") == "PRIVATE_INDIVIDUAL"]
curbstoners = [s for s in sellers if s.get("is_undisclosed_dealer") is True]

print(f"Audited {len(sellers)} unique sellers:")
print(f" - Genuine Private Owners: {len(private_owners)}")
print(f" - Undisclosed Dealers / Curbstoners: {len(curbstoners)}")

pd.DataFrame(sellers).to_excel("fb_marketplace_seller_audit.xlsx", index=False)

6. Frequently Asked Questions (FAQ)#

What input format does the scraper accept?

Pass one or more Facebook Marketplace Item URLs (https://www.facebook.com/marketplace/item/<id>/) in start_urls or numeric Item IDs (164026455XXXXXX) in item_ids.

How can I cap my spend when auditing high-volume dealers?

The Actor uses transparent Pay-Per-Event (PPE) billing ($0.04 per extracted seller inventory listing + $0.05 per run start). You can cap the maximum number of listings returned per seller using max_items_per_seller (1–100) or set a hard USD ceiling on any run using Apify's Maximum cost per run option.

Can I automate this in n8n without writing Python code?

Yes. Visit the UnitBytes n8n Automation Hub to download the pre-built 18-node Facebook Marketplace Seller Profile & Inventory Scraper n8n Workflow, which schedules seller catalog audits, classifies dealer/curbstoner risk with OpenAI (gpt-4o-mini), logs profiles to Google Sheets and CSV, and sends instant alerts to Slack and Telegram.


🚀 Start Auditing Facebook Marketplace Sellers & Dealer Inventories#

Explore the complete UnitBytes Facebook Marketplace Suite on Apify:

Need a custom Done-For-You dealer inventory feed, multi-state curbstoner audit, or enterprise volume integration? Request a dataset via the Done-For-You Dataset Form below or email contact@unitbytes.com.

Tags: #Facebook Marketplace#Seller Intelligence#Curbstoner Detection#Auto Dealerships#Real Estate FSBO#Used Car Acquisition#Apify
Continue Reading

Related Technical Guides & Teardowns

All Guides →
Done-For-You Datasets • Data Feeds • Custom Scrapers

Need Custom Tutorials & Guides Data or a Dedicated Pipeline?

Don't want to run scrapers yourself? Tell us what data you need and we'll deliver a clean Excel / CSV / Google Sheets dataset, set up a recurring data feed, or build a custom scraper for a new site.

One-Time Dataset
From $99

Send your keywords, categories, or URLs. We run the extraction and email you a clean Excel/CSV file, usually within 48 hours.

Recurring Data Feed
Priced by Volume

Daily or weekly data delivered to Google Sheets, Amazon S3, BigQuery, or a webhook. Tell us the volume and we'll quote a fixed monthly price.

Custom Scraper
From $299

Need a new website scraped or custom fields added? We build it, deliver it, and can maintain it for you.

We reply within 48 hours.
Prefer direct email? Write to us anytime at contact@unitbytes.com