Social Listening API: Brand, Hashtag and Place Endpoints
Social listening API reference: what it returns, which endpoints track brands, hashtags and locations, and how to design ingestion within rate limits.

Social media reached 5.24 billion active user identities in January 2025, according to DataReportal's global overview. A social listening API makes that conversation accessible to software, but access isn't the same as complete coverage. Reliable monitoring starts with knowing which records an endpoint can return, which identifiers connect them, and which conversations remain outside its reach.
Table of Contents
- What a Social Listening API Returns
- Endpoint Reference for Brand, Hashtag and Location Monitoring
- Designing Ingestion, Rate Limits and Data Provenance
- How to Monitor a Brand Step by Step
- Tracking Hashtags With Top, Recent and Search Endpoints
- Monitoring Locations and Venues Through Place Endpoints
- Coverage Gaps, Sentiment Limits and Verification
- Confirm Your Endpoint Map Before You Build
What a Social Listening API Returns
A social listening API gives software programmatic access to social media data. Instead of asking someone to read a dashboard, an application requests structured records, commonly JSON, that it can store, filter, compare, and analyze. Public-data access still has boundaries: an endpoint doesn't necessarily expose everything someone can see inside a social application.
The scale makes automation useful, but the unit matters. Social media user identities aren't necessarily unique people, because someone may maintain multiple accounts. Likewise, account counts, author counts, post counts, and mention counts answer different questions and shouldn't share an interchangeable label.
The records behind a monitoring result
Most listening workflows work with these record types:
- Account: A profile identified by a platform account ID, with attributes such as username and biography.
- Post or reel: A content object with its own identifier, author reference, publication timestamp, and available media or caption fields.
- Comment: A conversation object connected to a parent post, ideally retaining its own identifier, author, and timestamp.
- Liker: An account reference associated with a post's likes, not a separate statement of opinion.
- Hashtag result: A discovery record connecting a tag query to matching tags or returned posts.
- Location: A place record whose identifier connects place details to tagged content.
Don't assume every record contains every field. A location might lack a creation timestamp, while a liker relationship might lack the time someone liked the post. Store a retrieval timestamp yourself, and leave unavailable source timestamps null rather than inventing them.
Start with the monitoring question
Brand, hashtag, and location monitoring use different endpoint families. A brand question may require account discovery and comments; a campaign question may require hashtag results; a venue question starts with a place identifier.
A broader guide to APIs for social media can help distinguish these retrieval patterns from publishing and account-management workflows.
Practical rule: Choose the record you need before choosing the endpoint. The record determines which identifier you must obtain first.
Responses are often paginated, so inspect the next-page cursor or token rather than treating the initial response as complete. Also check the historical window, ordering, and stopping conditions: exhausting available pages doesn't prove that you've retrieved all content ever published.
Endpoint Reference for Brand, Hashtag and Location Monitoring
Endpoint families by monitoring goal
| Monitoring Goal | Endpoint | Input Required | Fields to Use |
|---|---|---|---|
| Brand mentions | Search users | Brand name or term | Username, numeric ID, verification status |
| Brand account activity | Get profile | Username, numeric ID or profile URL | Bio, follower count, account creation details |
| Brand account activity | Get posts | Username or numeric ID | Captions, media URLs, engagement counts, timestamps |
| Brand account activity | Get reels | Username or numeric ID | Reel captions, media, engagement counts |
| Ephemeral content | Get stories | Username or numeric ID | Currently active stories |
| Customer conversation | Get comments | Post identifier | Comment text, author, timestamp |
| Audience response | Get likers | Post identifier | Account identifiers of accounts that liked the post |
| Hashtag campaign | Search hashtags | Hashtag text | Matching hashtag names and variants |
| Hashtag campaign | Get top hashtag posts | Hashtag | High-ranking posts, captions, engagement counts |
| Hashtag campaign | Get recent hashtag posts | Hashtag | Latest posts, timestamps, author |
| Location monitoring | Search locations | Place name | Location identifier |
| Location monitoring | Get location | Location identifier | Place details |
| Location monitoring | Get location posts | Location identifier | Posts tagged at the place, caption, media URLs, engagement, author |
| Content analysis | Comment sentiment | Post identifier | Sentiment and themes, model output requiring verification |
These are endpoint family names, not literal request paths or a promise that every platform exposes the same fields. Use the implementation's schema to confirm parameter names, supported identifiers, permissions, and response properties. Account creation information, for example, may require a separate transparency lookup rather than appearing in a basic profile response.
Read the input column first
If you only know a brand name, you don't yet have the identifier needed to retrieve its posts reliably. Search users first, inspect candidate profiles, and retain the confirmed account ID. That account ID becomes the input for account-level retrieval.
The brand-mentions row needs a qualification: user search discovers accounts, not every textual mention of a brand. A matching username can identify a candidate account, but it doesn't establish that the account's posts discuss the brand. Caption and comment matching happen after you retrieve accessible content.
The same dependency applies elsewhere. You need a post identifier before requesting comments or likers, and a location identifier before retrieving location posts. Hashtag endpoints may accept tag text directly or require a resolved tag identifier, so confirm the actual contract.
Store identifiers as opaque strings, even when they contain only digits. Don't perform arithmetic on them or assume different endpoint families use interchangeable formats. A post shortcode, a numeric media ID, and a post URL may identify related content without being accepted by the same parameter.
Preserve the joins between records
A useful normalized model retains account IDs on posts, parent-post IDs on comments, and place IDs on location results. Include a platform namespace in database keys so identifiers from different services can't collide.
For mutable fields, keep snapshots separately from identity. A username can change; a follower count describes an account at retrieval time. Neither should replace the account's identifier as the join key.
Observed fields include returned caption text, timestamps, authors, and engagement counts. Derived outputs include sentiment labels and generated themes. Keep the original content available alongside those outputs so reviewers can inspect what an interpretation was based on.
Use the table as a request-planning lookup: identify the desired record, find the required input, and trace backward until you reach information you already hold. That backward trace is the endpoint map.
Designing Ingestion, Rate Limits and Data Provenance
Rate limits affect what your monitoring system observes. Meta's Graph API rate-limit documentation states that requests are rate-limited and that exceeding call, CPU, or total-time limits can cause throttling and failures; its general platform model uses a rolling one-hour user-based allowance, while Instagram Platform endpoints use business-use-case limits.
A failed collection job must therefore remain distinguishable from a successful job that found no records. Otherwise, an operational outage can look like a sudden drop in conversation.
The ingestion controls should sit between your scheduler and every upstream request.

Control requests before adding workers
- Queue every call: Route scheduled collection, retries, and backfills through a shared dispatcher.
- Separate account budgets: Stop a busy tracked account from consuming the capacity reserved for others.
- Bound retries: Apply exponential backoff, respect retry instructions when supplied, and stop retrying permanent authorization errors.
- Constrain backfills: Use bounded collection windows, select necessary fields, and cache reusable responses.
Where supported, prefer event-driven updates for authorized accounts. Meta's Instagram Platform overview recommends webhooks to reduce API calls and rate-limit risk. Validate subscription requests, authenticate payloads, persist events before acknowledgment, and process them asynchronously; webhooks don't replace discovery endpoints for arbitrary public content.
Make provenance part of the schema
Every normalized record should retain source platform, retrieval time, source object ID, account or app context, endpoint class, authorization context, and processing status. Store authorization references, not secret tokens. Also retain request identifiers and collection-job status so an analyst can distinguish source changes from pipeline failures.
For a warehouse implementation, the Instagram-to-BigQuery workflow is a useful integration reference. Keep raw retrievals separate from normalized tables, with restricted access to both and a documented deletion path.
Privacy controls should include purpose limitation, a documented lawful basis where required, retention schedules, access logging, encryption, tenant isolation, and pseudonymized analytics exports. Determine controller responsibilities for the actual processing arrangement rather than assuming public availability settles the question.
Propagate deletions through raw, enriched, cached, and vector-indexed copies. Small cohorts and rare terms can remain identifying even in aggregated reports.
Finally, store observed records separately from model-generated sentiment, suspicious-follower estimates, or lead-fit scores. Retention and deletion status should travel with both.
How to Monitor a Brand Step by Step
Brand monitoring works best as a repeatable collection procedure, not an unrestricted search promise. Define the accounts and discovery routes you can observe, then keep a record of what each route contributes.
Use the following sequence to turn brand terms into reviewable evidence.

Build and run the collection procedure
Build a brand term list. Include the official name, product names, handles, common misspellings, and abbreviations, with exclusions for ambiguous words. The common slip is tracking only the official spelling, which leaves ordinary customer language unmatched.
Resolve owned and tracked accounts. Use Search users, then confirm candidates with profile details, recording the username, numeric identifier, and available verification status. Don't accept a familiar display name or badge alone as proof that you've found the intended account.
Collect posts and reels on a defined schedule. Save each content identifier with its publication timestamp and your retrieval time, and track whether page traversal completed. A frequent mistake is counting an unfinished collection run as a quiet period rather than an incomplete observation.
Retrieve conversations selectively. Pull comments for posts containing customer questions, unusual engagement, or operationally important topics, retaining author references and timestamps. The common slip is assuming a post's comment count means the comments themselves have been collected, including replies.
Match captions against the term list. Search the retrieved text for untagged references and record the matched term, text span, and matching rule. Ambiguous abbreviations should receive lower confidence, because a text match isn't automatically a genuine brand reference.
Deduplicate before counting. Upsert by platform and source object identifier, while allowing engagement snapshots to update independently. Retries can return the same object, but a genuine repost may have a different identifier and should be labeled as related content rather than silently deleted.
Establish a baseline and flag deviations. Compare daily post and comment counts with a baseline built from comparable, successfully collected periods, using an agreed review threshold. Without that baseline, a viral post can trigger an exaggerated crisis label even when the discussion is positive or routine.
Make the daily output auditable
The working output is a record set keyed by object identifier, a collection-health summary, a baseline, and a short queue of anomalies. Give reviewers the source text and the reason each item was flagged, not just a score.
Keep collection failures out of the business-alert queue unless the alert explicitly concerns missing data. A customer-service lead needs to know whether discussion increased; an engineer needs to know whether the collector stopped.
An alert should identify both the unusual observation and the evidence needed to check it.
Assign review outcomes such as relevant, unrelated, needs response, and uncertain. Feed those decisions back into term exclusions and account selection so monitoring becomes more precise without silently narrowing its scope.
Tracking Hashtags With Top, Recent and Search Endpoints
Hashtag endpoint signals compared
| Signal | Endpoint | Monitoring Use | Limit to Note |
|---|---|---|---|
| Tag existence and variants | Search hashtags | Confirm tags and find spelling variants | Shows names, not campaign volume |
| Dominant content | Get top hashtag posts | Find high-ranking creative and narratives | Ranking favours engagement, not volume |
| Latest activity | Get recent hashtag posts | Detect launches and short-term spikes | Limited to what the endpoint returns |
| Automated theme read | Analyze hashtag | Quick overview of themes around a tag | Model output, verify against raw posts |
Search, top, and recent results answer different questions. Treat them as separate inputs rather than interchangeable ways to retrieve a hashtag's complete conversation.
The discovery paths can be represented as parallel signals.

Separate ranking from activity
Top posts help identify prominent creative and narratives. Their ranking can favor engagement, but the exact ranking mechanism isn't necessarily disclosed, so don't interpret position as a transparent popularity formula. Counting these results won't establish campaign volume.
Recent posts are more useful for examining timing, provided you retain publication timestamps and collection status. A larger returned set may indicate more observed activity, but it may also reflect a change in how much of the available window you successfully collected.
Keep the endpoint family on each result. If the same post appears in top and recent results, count the content object once while preserving both discovery relationships.
This accompanying video provides another format for exploring the hashtag workflow.
Build a tag dictionary before aggregating
Say a campaign is called Morning Ritual Launch. Customers might use #MorningRitualLaunch, the shortened #MorningRitual, or #MRLaunch. A phrase containing spaces isn't a continuous hashtag, so normalize the campaign phrase into candidate tags rather than treating spaced text as an equivalent tag.
Use hashtag search to inspect variants, then sample returned posts for unrelated meanings. Track each accepted tag as a separate series before combining results, preserving the original tag and campaign mapping.
Watch author diversity alongside post activity. Repeated posting by the same account can create an apparent surge without broader participation. Inspect recurring captions, author concentration, and unrelated promotional content before describing a trend.
Automated hashtag themes are useful as a review aid, not as a replacement for reading posts. Check whether each generated theme has supporting examples and whether a dominant account supplied most of them.
The coverage checks under Coverage Gaps, Sentiment Limits and Verification are especially important before turning hashtag observations into claims about the wider audience.
Monitoring Locations and Venues Through Place Endpoints
Location monitoring follows a concrete dependency chain: Search locations → Get location → Get location posts. Search with a place name, confirm the candidate place, then use its identifier to retrieve tagged posts. Don't substitute the venue's account identifier for its location identifier.
Say a coffee chain maintains a store register. Each store row should connect an internal store key to its confirmed platform location identifier, accepted name variants, and the date someone last checked the mapping.
Keep the store map separate from the content
| Store-map field | Why it belongs in the workflow |
|---|---|
| Internal store key | Preserves business identity when a platform place changes |
| Platform location identifier | Supplies the input for location-post requests |
| Accepted names and neighborhood terms | Supports text matching within collected content |
| Match status and review date | Shows whether the mapping has been confirmed |
Run scheduled location-post collection against that register. Store the returned post identifier, caption, media references, author, and available engagement fields, along with the location relationship.
A customer may write the neighborhood name instead of the official store name. Matching those caption variants can help classify collected posts, but it won't discover every untagged post elsewhere on the platform.
Location posts describe tagged content, not everyone who visited or discussed the venue. A place tag doesn't prove a purchase, physical presence at publication time, or satisfaction with the business. Keep those interpretations out of raw location metrics.
Handle events and ambiguous places
For an event, collect the venue's tagged posts and the event hashtag as separate discovery streams. Define pre-event, event-day, and post-event windows before collection, using a consistent timezone and recording publication time separately from retrieval time.
Compare the streams without adding their counts blindly. A post may carry both the venue tag and the campaign hashtag, so retain its discovery memberships while counting the content object according to the question being answered.
Venues sharing a name require manual disambiguation using available place details. A relocated or renamed business may retain an old place entry or acquire a new identifier, so keep mapping history instead of overwriting it.
Seasonal changes in tagging behavior also deserve review. A rise in venue-tagged content might reflect an event's photo opportunities rather than a comparable increase in ordinary customer discussion.
Use the hashtag comparison to choose the event-tag signal, and apply coverage checks before comparing branches. A store with fewer observed tagged posts isn't necessarily less popular than a store whose customers tag more frequently.
Coverage Gaps, Sentiment Limits and Verification
The reported 2025 audit of Meta and TikTok research APIs, discussed in the context of Meta's research collections and snapshots, found that restrictions could exclude up to approximately 50% of platform information environments. The audit figures below concern research-API access, not a measured coverage guarantee for every commercial listening service.
Audit coverage figures for platform research APIs
| Measure | Reported value | Source context |
|---|---|---|
| Excluded platform information environments | Up to approximately 50% | 2025 audit of Meta and TikTok research APIs |
| Metadata removed | Up to 83% | 2025 audit of Meta and TikTok research APIs |
| Researcher request allowance | Roughly 1,000 per day | 2025 audit of Meta and TikTok research APIs |
| Instagram Explore posts accessed | About 50% | Instagram-specific audit finding |
| Instagram browser metadata accessed | 42% | Instagram-specific audit finding |
The operational conclusion is straightforward: more requests don't guarantee a more representative sample. You can collect a large volume from an accessible slice while missing the communities or surfaces relevant to the decision.
Measure reachable coverage, not imagined completeness
Build a manually verified reference set of relevant, eligible posts or accounts. Record which appear through each endpoint, grouped by ranking surface, language, account type, geography, and observation period. The share captured describes that reference set, not the unknowable total conversation.
Use distinct collection states:
- Successful empty result: The request completed without matching records.
- Known access exclusion: The object or account is outside the endpoint's documented scope.
- Incomplete collection: Throttling, failed pagination, or another interruption prevented completion.
- Unresolved absence: A known item wasn't returned, and the cause remains unconfirmed.
Attach confidence labels to analytical outputs, explaining both collection quality and interpretive uncertainty. Set acceptance thresholds before the pilot according to the harm of missing relevant content; there isn't a universal threshold that makes every monitoring task reliable.
For dashboard selection, MyMentions' discussion of brand visibility platforms and their limitations provides useful context for comparing interfaces without confusing feature breadth with observable coverage.
Verify interpretation separately
Work on measuring social-media listening also challenges the assumption that visible response proves someone was heard. Silence doesn't establish agreement, and engagement doesn't establish trust.
Bots, sarcasm, cultural references, mixed emotions, and uneven internet access all complicate interpretation. Combine direct mentions with comments, repeated themes, community context, and appropriate offline evidence rather than forcing every item into a positive-or-negative category.
Verification checkpoint: A negative label without supporting text and contextual review is a hypothesis, not a finding.
Route high-impact classifications to language-competent human reviewers. Record uncertain or mixed sentiment explicitly, and retain the model version and supporting source objects.
When designing an Instagram analytics API workflow, separate observed metrics, calculated metrics, and model inferences. That distinction lets reviewers challenge an interpretation without discarding the underlying record.
Confirm Your Endpoint Map Before You Build
Confirm the endpoint map before writing the collector. Better application code won't correct a workflow that starts with the wrong identifier or measures a conversation its endpoints can't observe.
Use these pre-build checks:
- Write the questions. Express each goal as a brand, hashtag, or location question, with a named decision-maker and intended action.
- Trace the inputs. Match each question to the endpoint reference, recording the required identifier and the lookup that supplies it.
- Define the coverage test. Assemble known eligible content and decide what missing results would make the workflow unsuitable.
- Validate a request. Confirm request format, authentication, permissions, accepted ID types, and error handling before load testing.
- Run a bounded pilot. Start with a narrowly scoped brand, hashtag, and venue, logging duplicates, empty responses, and anomalies against manual checks.
- Classify the outputs. Engagement rate is a calculated metric; sentiment is a model interpretation. Neither is an untouched source record.
Use the contract as the implementation reference
Our OpenAPI specification is available through the documented integration resources and works with Swagger/Redoc, Postman, SDK generators, and agent tool loaders. Use it to validate operation names and parameter schemas rather than turning descriptive endpoint labels into guessed request paths.
Finalize the map, run the pilot, and compare the observed results with your predefined coverage and review thresholds. Expand only when the collector's behavior and its remaining blind spots are understood.
Instagram API offers structured JSON access to public Instagram profiles, posts, comments, hashtags, and locations for monitoring workflows. Visit Instagram API to inspect the available operations and test the identifier chain for your brand, campaign tag, or venue before expanding collection.
Pull Instagram data with one API call
Profiles, posts, reels, followers and more. 50 free credits, no credit card.
Get your free key