Social Media Public Data: What You Actually Get, and What No Vendor Can Give You

What social media public data really covers, the official Instagram surfaces and their limits, the fields you get, and the five things no public source returns.

Ronak Shah
Growth at Phyllo
August 11, 2026
August 11, 2026
3D glossy Instagram app icon beside an open padlock and a hashtag symbol, representing Instagram data visible without a login
Summarize this article with AI
GeminiChatGPTClaudePerplexityGrok

Social media public data is what a platform shows without a login. This guide covers Instagram's three official surfaces and their real limits, the working calls, the fields you actually receive against what vendors advertise, the five things no public source returns, and why public data has no history before you start collecting.

This is some text inside of a div block.
  • Social media public data is whatever a platform shows without a login: on Instagram that is Hashtag Search, Business Discovery and oEmbed.
  • Hashtag Search needs App Review, caps 30 hashtags per rolling 7 days, returns only the last 24 hours, and hides usernames.
  • Business Discovery is the only official route to another account's profile, and the target must be a Professional account.
  • Advertised field counts are inflated by calendar columns, so 43 dimensions is roughly 21 real Instagram fields.
  • Impressions, reach, demographics, Stories and earnings go to the account holder only.

Social media public data is the information a platform renders to someone who is not logged in and has no relationship with the account. Follower counts, post captions, public like and comment counts, media URLs, bios. That is the whole category, and it is genuinely useful.

The confusion starts because "Instagram Public Data" is also a product name used by a dozen business intelligence connectors, and those products do not all run on the same thing. Some wrap Meta's official endpoints and inherit every one of Meta's limits. Some offer capabilities that Meta's official endpoints cannot produce, which tells you they are getting the data another way.

I am going to lay out the official surfaces with their real limits, show the calls, audit what fields you actually receive against what vendors advertise, and be specific about the five things no public source will ever return. Current as of July 2026.

What counts as social media public data?

Anything visible without authentication. The practical test is simple: open a private browser window, visit the profile, and whatever you can see is public data. Whatever you cannot see is not, and no vendor changes that.

That gives you three broad categories across platforms.

CategoryExamplesWho it is useful for
Profile dataUsername, name, bio, profile picture, website, follower and following counts, post countDiscovery, screening, competitor benchmarking
Post dataCaption, hashtags, media type, media URL, permalink, timestamp, public like and comment counts, Reels view countContent analysis, campaign tracking, social listening
Derived metricsLikes per post, comments per post, engagement rate, posting frequency, caption lengthRanking and filtering creators, trend analysis

Notice what is not on that list. Every metric a brand actually uses to judge a campaign, meaning impressions, reach, saves, shares, profile visits and audience breakdown, sits behind the account holder's login. I will come back to that.

What are Instagram's official public data surfaces?

Three, and each one is narrower than its name suggests. If a vendor is offering something these three cannot do, that is a question worth asking them.

Surface 1: Hashtag Search

This is what Meta formally calls Instagram Public Content Access, and the documentation is unusually specific about what it is for: discovering content tied to your hashtag campaigns, understanding public sentiment around your brand, identifying entrants to contests and sweepstakes, customer support, and audience management. Those allowed usages are enumerated, not illustrative.

The gate is real. You need the instagram_basic permission and the Instagram Public Content Access feature, both granted through App Review, plus business verification. Meta also notes you may need to sign additional contracts.

LimitDetail
Unique hashtags30 per rolling 7-day period, per Instagram Business or Creator account. A hashtag counts the moment you query it. Re-querying the same one inside 7 days does not count again
RecencyThe recent_media edge returns only media published within 24 hours of the query
PaginationMaximum 50 results per page, cursor-based
UsernamesYou cannot request the username field. You get the post, not the poster
PIIResponses contain no personally identifiable information
StoriesHashtags in Stories are not supported
EmojisEmoji hashtags are not supported
Sensitive termsHashtags Meta deems sensitive or offensive return a generic error
WritesYou cannot comment on hashtagged media discovered through the API

Read the username row twice, because it reshapes products. You can build a hashtag feed, measure volume, and analyse caption sentiment. You cannot build creator discovery on it, because the API will not tell you whose post you are looking at. Our full walkthrough of pulling photos by hashtag covers the flow in more depth.

Surface 2: Business Discovery

This is the only official way to read another account's public profile data, and it comes with two conditions people miss. You need your own authenticated Instagram Business account and token, so "no authentication" is never true. And the target must be a Professional account, meaning Business or Creator. Personal accounts return nothing.

Surface 3: oEmbed

Returns embed HTML for a public post or Reel. Useful for displaying content on your site, useless as a data source. Worth knowing exists so you do not confuse an embed with an API.

What do the calls actually look like?

Two flows, both against graph.facebook.com. Replace the version with the current one and verify against Meta's reference before you build on these.

Hashtag Search: resolve, then read

Hashtags are nodes with IDs, so it is always two calls. Cache the ID, because resolving the same hashtag twice is a wasted request against a tight budget.

# Step 1: resolve the hashtag to a node ID
curl -s -X GET \
  "https://graph.facebook.com/v25.0/ig_hashtag_search\
?user_id=IG_USER_ID\
&q=coffeelover\
&access_token=LONG_LIVED_TOKEN"

# { "data": [ { "id": "17843826142012701" } ] }

# Step 2: read recent media. Last 24 hours only.
curl -s -X GET \
  "https://graph.facebook.com/v25.0/17843826142012701/recent_media\
?user_id=IG_USER_ID\
&fields=id,caption,media_type,media_url,permalink,\
comments_count,like_count,timestamp,children\
&limit=50\
&access_token=LONG_LIVED_TOKEN"

# Note: "username" is NOT a requestable field here.
# Adding it returns an error, not a null.

# Step 3: top_media works the same way, different edge
# GET /{hashtag-id}/top_media?user_id=...&fields=...

Business Discovery: one call, nested syntax

This one trips people up because the target username goes inside the fields parameter rather than as its own argument.

curl -s -X GET \
  "https://graph.facebook.com/v25.0/IG_USER_ID\
?fields=business_discovery.username(target_account){\
id,username,name,biography,website,profile_picture_url,\
followers_count,follows_count,media_count,\
media{id,caption,media_type,media_url,permalink,\
like_count,comments_count,timestamp}}\
&access_token=PAGE_ACCESS_TOKEN"

# Fails if target_account is a personal account.
# Media edge is cursor-paginated.

Both surfaces sit under Meta's Platform Rate Limits rather than the Business Use Case formula that governs most Instagram Platform endpoints. If you want the full rate limit picture, we broke it down in our complete Instagram API guide.

What fields do you actually get?

Fewer than the marketing implies, and the gap is mostly calendar columns. I went through the published field references from four business intelligence connectors that all sell an "Instagram Public Data" product, and the counts do not agree with each other or with themselves.

VendorAdvertisedDate and metadata columnsReal Instagram fields
Supermetrics9 metrics, 43 dimensions14 time dimensions, 9 query metadata, 3 data sourceRoughly 21
Windsor.ai5 metrics, 37 dimensionsRoughly 16 time dimensions plus fetch metadataRoughly 20
Catchr5 metrics, 30 dimensionsNot itemised publiclyNot determinable from the page
Porter Metrics30+ fieldsDate, hour, week, month, quarter, year breakdownsRoughly 20

Work through one of them and the pattern is obvious. Supermetrics lists 43 dimensions. Fourteen of those are calendar columns: year, yearOfWeek, yearOfWeekIso, yearMonth, month, yearWeek, yearWeekIso, week, weekIso, dayOfMonth, dayOfWeekName, dayOfWeekNameIso, date, today. Nine more are query metadata like start date, end date, timezone and duration. Three describe the data source itself. What remains is about 21 actual Instagram fields, and two of those are caption length calculations.

None of this is dishonest. Those columns are genuinely useful when you are building a Looker Studio report and need to group by week. But "43 dimensions" and "21 Instagram fields" are very different claims, and only one of them is about Instagram.

Here is the actual set, which is consistent across all four vendors because they are all reading the same underlying surfaces:

GroupFields
ProfileInstagram ID, username, name, biography, profile picture URL, website, followers, follows, total post count
PostPost ID, timestamp, type (IMAGE, VIDEO, CAROUSEL_ALBUM, REEL), product type (AD, FEED, IGTV, STORY), media URL, thumbnail URL, permalink, caption, hashtags found, hashtag count, comments count, likes count, Reels view count
DerivedLikes per post, comments per post, post count, caption length, caption length excluding hashtags

One quiet trap in that list. Comment counts from these surfaces include replies, so they will not match the number a person sees in the Instagram app. Porter documents this in their own troubleshooting. It is expected behaviour, and it is the kind of thing that turns into a client dispute if nobody flagged it.

What can public data never tell you?

Five things, and no vendor, index or scraper reaches them, because Instagram releases them to the account holder alone. This is a structural boundary, not a difficulty curve, and it is the single most important thing to establish before you scope a product.

MissingWhyWhat people substitute, and the risk
Impressions and reachRendered only inside the creator's own analyticsEstimated reach modelled from followers and engagement. Fine if labelled, misleading if resold as measured
Audience demographicsReleased to the account owner onlyInferred demographics from follower sampling. Directionally useful, not defensible in a media plan
Stories performanceExpires in 24 hours, never publicly archivedNothing. Public data has no Stories layer at all
Saves, shares, profile visitsPrivate engagement signalsLikes and comments as a proxy, which misses the formats that drive discovery
Earnings and monetisationNever rendered on any public surfaceRate card estimates. No public source holds real payout data

That table is why the two data models exist rather than one. We wrote up where the line falls in consent-based versus public social APIs.

Why does public data have no history?

Because the surfaces return a snapshot of the present, not a time series. This catches teams out more than any rate limit does, and both of the connector vendors who document it honestly say the same thing.

Dataddo states it plainly in its own docs: none of the Instagram Public Data datasets use a date range, and every run pulls all currently available data. Porter's troubleshooting page answers the complaint directly, telling users that public data provides current profile snapshots and recent media, and that for deep historical analysis you should start tracking a profile early and let the tool build history over time.

So the honest framing is that you are not querying history, you are starting a recorder. Follower counts, post counts and engagement figures are point-in-time values. If you want a competitor's growth curve for the last two years, no public data product has it, and any that claims to has been collecting it since then and is selling you their archive.

Two practical consequences. Start collecting before you need the data, because you cannot backfill. And store every snapshot with its own fetch timestamp, which is exactly why Windsor exposes a data_fetched_at column and Dataddo exposes an extraction timestamp.

How do the public data connectors differ?

Mostly by destination and pricing model, and in one important way by how they get the data. The first four in this table are business intelligence pipes, which is a different product from an API you build a feature on.

VendorBuilt forAuth model, as documentedPricing signal
SupermetricsSheets, Looker, Power BI, warehousesConnector authEnterprise, not published per source
Windsor.aiWarehouses, BI, AI tools, MCPConnector authTiered, SOC 2 Type II stated
DataddoWarehouses and dashboardsOAuth 2.0, Instagram must be linked to Facebook, admin permissionsTiered
CatchrLooker, Power BI, Sheets, warehousesConnector authTrial, then tiered
Porter MetricsLooker Studio, Sheets, BigQueryStates no Instagram login or OAuth required, any public usernameFrom about $12.50 per profile per month

Dataddo is the clearest on the constraint. Its documentation says outright that the Instagram Public Data API is not for accessing data from personal accounts, requires OAuth, and points to Meta's official endpoints. That is what running on the official surfaces looks like.

Porter markets something different: no Instagram login required, enter any public username, start pulling in under two minutes, and an explicit FAQ on tracking competitors without their permission. No Meta surface produces that capability. Business Discovery needs your own authenticated account and only returns Professional accounts. Hashtag Search needs App Review and business verification and will not tell you who posted anything. I am not accusing anyone of anything, and there may be a licensing arrangement I cannot see from the outside. I am saying that if a tool offers a capability the documented endpoints do not, the correct response is to ask how, in writing, before you build a client deliverable on it.

That question matters more than it used to. If you resell this data, put it in a media plan, or use it in screening or due diligence, your buyer will eventually ask where it came from. "A connector" is not an answer that survives a procurement review.

What should you ask before buying a public data product?

  1. Which Meta surface does this run on? Hashtag Search, Business Discovery, oEmbed, or something else. If the answer is vague, that is the answer.
  2. Does it work on personal accounts? No official surface does. A yes here is worth understanding fully.
  3. Is any of it estimated? Reach and audience figures usually are. Fine if disclosed, a liability if you resell it as measured.
  4. What is the real field count, excluding calendar columns? Ask for the list, not the number.
  5. How far back does history go? If the answer is "from when you start", plan for that. If it is "two years", ask where the archive came from.
  6. How does it handle the 30 hashtag limit? If they run hashtag collection on your connected account, that budget is shared with every other tool you have connected.
  7. Do comment counts include replies? They usually do, and it will not match the app.
  8. What is the compliance position in writing? GDPR basis, retention, deletion. Ask before price if you sell into hiring, lending or immigration.

When do you need consented data instead?

When the answer to your product question is in the five-row gap table above. Public data is the right tool for discovery, competitor benchmarking, hashtag campaigns and social listening. It is the wrong tool the moment a brand asks what a post actually reached.

The two models are complementary rather than competing, and the strongest platforms run both. Public data at the top of the funnel to find and screen creators nobody has a relationship with. Consented data once a creator is onboarded, to replace estimates with the numbers the platform gives the account holder.

That second half is what we built Phyllo's social data API for. A creator connects their accounts through your product, approves the scopes, and you receive true impressions, audience demographics, engagement across every format including Stories, and earnings where the platform exposes them, normalised across 25+ platforms through one integration. For the public side, our social listening API covers conversation and mention tracking, and influencer vetting combines both. Field-level coverage per platform is public at getphyllo.com/coverage and the API reference needs no sales call.

Where we are the wrong tool, plainly. We need the creator to connect. If your job is analysing ten thousand competitor profiles who have never heard of you, a public data product is correct and we are not. We compared the whole market by access model in the best social media data APIs and covered the architectural split in the universal API guide.

What is social media public data?

Information a platform displays without a login: usernames, bios, follower counts, captions, media URLs and public like and comment counts. Not what it shows the owner alone.

Can I get Instagram public data without an API key?

Not through Meta. Hashtag Search needs App Review and business verification, and Business Discovery needs your own authenticated Instagram Business account and token.

How many hashtags can I track through the Instagram API?

30 unique hashtags per rolling 7 day period per Business or Creator account. A hashtag counts as soon as you query it, though re-querying it inside that window is free.

Why can I only see 24 hours of hashtag posts?

Because the recent_media edge returns only media published within 24 hours of the query. That is a Meta design decision, so a longer history means polling and storing it yourself.

Can I see who posted a hashtagged photo?

No. The username field cannot be requested on hashtag search results and responses carry no personally identifiable data, so hashtag search cannot power creator discovery.

Can I get public data for personal Instagram accounts?

Not through any official route. Business Discovery returns Professional accounts only, and Meta closed the Basic Display API in December 2024. Other claims use unofficial methods.

Does public data include impressions or reach?

No. Impressions, reach, saves, shares, profile visits, audience demographics and earnings all go to the account holder only. Advertised reach from public data is a modelled estimate.

How far back does Instagram public data go?

To the moment you start collecting. The surfaces return current snapshots and recent media, not a time series, so a competitor's past growth curve cannot be backfilled.

Is scraping public social media data legal?

It depends on your jurisdiction, the platform terms you agreed to, and whether collection is logged out. Public availability alone does not settle it. Take legal advice first.

Table of Content
See Phyllo in action
  • No Credit card required
  • GDPR & SOC2 Type II
  • 30-min Onboarding
Book a Demo

Be the first to get insights and updates from Phyllo. Subscribe to our blog.

Ready to get started?

Sign up to get API keys or request us for a demo