MindCase
Kritish Puri

How to Pull Facebook Page, Marketplace, and Post Data for Competitive Research

Benchmark a competitor's Facebook presence — page metrics, marketplace listings, and post engagement — without Facebook's own API getting in the way.

facebookproduct
How to pull Facebook page, marketplace, and post data for competitive research

Facebook is still where a huge share of local and consumer brands run their actual storefront — a Page for the brand, Marketplace listings for what they're selling, and Posts for what they're saying to followers. All three are public. None of them are easy to pull at scale without either building a scraper or fighting Facebook's own API.

If you're an agent (or building one) reading this rather than a human, the full machine-readable schema for every endpoint below lives at mindcase.co/skills.md.

What makes Facebook worth pulling data from for competitive research?

Three different signals live on three different surfaces, and they answer three different questions:

  • Page metrics — follower count, rating, category, whether the page is currently running ads. This is brand-level standing: who's bigger, who's trusted, who's actively advertising right now.
  • Marketplace listings — real prices for real items in a real category, posted by real sellers. This is the closest thing Facebook has to a live price feed for anything from furniture to electronics.
  • Post engagement — reactions, comments, shares, and what a brand is actually posting about. This is the content strategy a competitor is running, visible in public.

None of these require a login to see. All three require either a scraper you maintain or a workaround for Facebook's own limits to pull at scale.

Why doesn't Facebook's own Graph API cover this?

The Graph API exists, but it wasn't built for this. Pulling data on a page you don't own requires an app review process that can take weeks and still get rejected. What you get back is rate-limited hard enough that comparing more than a couple of pages in one sitting is impractical. Historical data is capped — you can't pull a year of a competitor's posts even if you're approved. And Facebook changes what the API exposes often enough that an integration built against it needs ongoing maintenance just to keep working, not because you added anything.

None of that is a reason to give up on the data. It's a reason to get it through a path that doesn't depend on Facebook's own approval queue.

How do you pull data across Pages, Marketplace, and Posts?

Take a concrete case: you run a home-goods brand and want a standing view of three direct competitors — their page standing, what they're currently selling on Marketplace in your category, and what they've posted this month.

How do you compare multiple competitor pages at once?

Facebook Pages API takes an array of page handles or URLs in one call, so you're not making a separate request per competitor.

curl -X POST "https://api.mindcase.co/v1/data/facebook/pages/run?wait=true" \
-H "Authorization: Bearer $MINDCASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
  "params": {
    "pageUrls": ["westelm", "cb2", "article"]
  }
}'

# $0.01 per page

Each row is a full page profile — 31 fields, including followers, rating, review count, category, contact details, and whether the page currently has ads running (runningAds). Pull the same three pages weekly and you have a real follower-growth and ad-activity trendline, not a one-time snapshot.

How do you check Marketplace listings for pricing intel?

Facebook Marketplace API takes one category or search URL per call — point it at your product category in the cities you care about.

curl -X POST "https://api.mindcase.co/v1/data/facebook/marketplace/run?wait=true" \
-H "Authorization: Bearer $MINDCASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
  "params": {
    "url": "https://www.facebook.com/marketplace/newyork/search/?query=modular%20sofa",
    "maxResults": 100
  }
}'

# $0.01 per listing

Each listing returns 21 fields — price, original price (so you can see what's actually discounted), condition, and location down to city and postal code. Run the same search across a few cities and you get real resale and secondhand pricing for your category, not a guess.

How do you track a competitor's recent posts?

Facebook Posts API takes one page URL per call and an optional date window, so you can pull just this month's activity instead of a page's whole history.

curl -X POST "https://api.mindcase.co/v1/data/facebook/posts/run?wait=true" \
-H "Authorization: Bearer $MINDCASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
  "params": {
    "urls": "facebook.com/westelm",
    "maxResults": 50,
    "onlyPostsNewerThan": "2026-08-21"
  }
}'

# $0.005 per post

Each post comes back with reactions broken down by type, not just a total — the difference between a "love" and an "angry" reaction is the whole point if you're reading sentiment, not just counting engagement.

How do you turn three separate pulls into one routine?

Run all three on the same schedule and they answer different questions about the same three weeks: did a competitor's follower count or ad activity change, did their Marketplace prices move, and did their posting volume or topic shift. Any one of these alone is a data point. Together, pulled weekly and diffed against the last run, they're the shape of what a competitor actually did — not what they say they're doing in a press release.

The three calls don't need to run in the same script or at the same time of day. Pages and Posts are cheap enough to run daily if you want tighter resolution on ad-activity changes; Marketplace searches are more useful weekly, since listing turnover in most categories is slower than page or post activity.

What can't you get from Mindcase?

Two cases.

Anything behind a login. Private profiles, closed groups, and content visible only to a page's own followers aren't reachable — not a gap Mindcase has, a boundary of what's public in the first place.

A deep historical archive. These endpoints read what's live on Facebook right now, plus whatever date window you ask for on posts. They don't reach back through a page's full multi-year history in one call — if you need that depth, you're building an archive yourself by pulling on a schedule and keeping what you collect.

Which endpoint should you use for which job?

EndpointInputPriceBest for
Facebook PagesPage handles or URLs (array)$0.01 / pageBrand-level benchmarking across competitors
Facebook MarketplaceOne category or search URL$0.01 / listingReal resale/local pricing in a category
Facebook PostsOne page or group URL$0.005 / postReading a competitor's recent content and engagement

FAQ

No. All three endpoints read public data only — no login, no app review, no access token to manage.

Yes, for public groups. Pass a group URL instead of a page URL to the Posts endpoint — use one or the other, not both in the same call.

Filter after retrieval, not in the request. The endpoint takes a category or search URL and a result cap; price and condition come back as fields on each row for you to filter locally.

$0.01 per page, $0.01 per marketplace listing, and $0.005 per post returned.