How to Track Celebrity Buzz and Entertainment Hype
Resolve a public figure to an entity id, rank their coverage by engagement, and read share counts to see what actually spread
Written by Beatrice Riddick
July 27, 2026
How to track celebrity buzz and entertainment hype
To track celebrity buzz, resolve the person’s name to an entity id through /v1/people, then query /v1/news/everything with sort.by=engagement — a composite ranking built for viral potential that weighs timeliness, media richness and positive sentiment. Every article returns a shares object with Facebook, X and Reddit counts, so you can see which stories actually travelled rather than which merely got published.
curl "https://api.apitube.io/v1/news/everything?person.name=Taylor%20Swift&sort.by=engagement&per_page=50" \
-H "X-API-Key: YOUR_API_KEY"
Pass the key as the api_key query parameter or as an X-API-Key header. Each result carries a shares object alongside the usual article fields.
How do you resolve a celebrity name to a stable id?
person.name is quick to write, but it matches the extracted person entity by name, so two public figures who share a name land in the same feed. An entity id does not. Resolve the name once through the people directory:
curl "https://api.apitube.io/v1/people?name=Taylor%20Swift" \
-H "X-API-Key: YOUR_API_KEY"
The response includes an id (for example 1035093), Wikipedia and Wikidata links, and a coverage block summarising how the press has been treating that person. Feed that id into entity.id to pull articles unambiguously:
curl "https://api.apitube.io/v1/news/everything?entity.id=1035093&sort.by=engagement&per_page=50" \
-H "X-API-Key: YOUR_API_KEY"
Ids are stable, so resolve once and store the result rather than looking the name up on every request. The people directory and its coverage block are covered in how to use the people directory.
How do you rank celebrity coverage by how viral it is?
sort.by accepts five composite modes, and engagement is the one tuned for social spread. It favours recent articles with images or video and positive framing — the profile of a story that gets shared rather than filed. controversy is its mirror image, surfacing polarising coverage instead:
# What is spreading right now
curl "https://api.apitube.io/v1/news/everything?person.name=Taylor%20Swift&sort.by=engagement&published_at.start=NOW-7DAYS" \
-H "X-API-Key: YOUR_API_KEY"
# What is dividing people
curl "https://api.apitube.io/v1/news/everything?person.name=Taylor%20Swift&sort.by=controversy" \
-H "X-API-Key: YOUR_API_KEY"
The other three modes are relevance (query matching plus quality signals), quality (editorial curation) and trust (source credibility, weighted heavily toward high-ranking domains). Full behaviour of each mode is described in how to use advanced sort modes.
How do you read the share counts on an article?
Every article carries a shares object with a per-platform breakdown:
{
"shares": { "total": 408, "facebook": 216, "twitter": 128, "reddit": 64 }
}
Share counts are aggregated gradually over roughly two hours from publication, so a story published minutes ago will show a low number that keeps climbing. Comparing a fresh article against a day-old one on raw share count therefore understates the fresh one. Note also that shares are a response field and a sort key, not a filter — there is no minimum-shares filter parameter. To find high-share articles, sort by them and apply your own threshold in code. The sort keys are shares.facebook.min, shares.twitter.min and shares.reddit.min; the .min suffix is part of the key name and does not set a floor, and direction comes from sort.order:
curl "https://api.apitube.io/v1/news/everything?person.name=Taylor%20Swift&sort.by=shares.reddit.min&sort.order=desc&per_page=50" \
-H "X-API-Key: YOUR_API_KEY"
Dropping the .min suffix does not fail loudly — sort.by=shares.reddit is silently ignored and you get an unsorted page, so keep the exact key name.
How do you tell adoring coverage from a backlash?
Sentiment filters split the feed by tone. sentiment.overall.polarity takes positive, neutral or negative; sentiment.overall.score is the underlying number from -1 to 1 and accepts .min and .max bounds:
curl "https://api.apitube.io/v1/news/everything?person.name=Taylor%20Swift&sentiment.overall.polarity=negative&published_at.start=NOW-7DAYS" \
-H "X-API-Key: YOUR_API_KEY"
The useful metric is the share of negative coverage rather than its raw volume — a star with ten times the coverage will always have more negative articles in absolute terms. Run /v1/news/count twice, once unfiltered and once with the polarity filter, and divide. For a per-mention rather than per-article view, entity-level sentiment scores how each individual entity is treated inside an article, which matters when one piece covers several people at once.
How do you scope buzz to a genre or a market?
Entertainment splits into fine-grained categories: medtop:20000005 is cinema, medtop:20000002 is arts and entertainment overall. Combine one with a person filter to isolate their film coverage from their music or personal coverage:
curl "https://api.apitube.io/v1/news/everything?person.name=Taylor%20Swift&category.id=medtop:20000005&per_page=50" \
-H "X-API-Key: YOUR_API_KEY"
Prefer a specific subcategory over the top-level medtop:01000000, which spans all arts, culture and media and is one of the largest categories in the corpus — very broad category queries combined with other filters can time out. For geography, facet=true&facet.field=source.country.id returns a country breakdown of the whole match set in one request, which tells you where a story is landing without fetching any articles.
Common Questions
- Can I filter articles by number of shares?
- Why do share counts look too low on brand-new articles?
- What is the difference between person.name and entity.id?
- How do I compare buzz across several celebrities?
Can I filter articles by number of shares?
No. Shares exist as response fields and as sort keys (shares.facebook.min, shares.twitter.min, shares.reddit.min), but not as filter parameters — there is no minimum-shares filter, and the .min in those key names is part of the sort key rather than a threshold. Sort by engagement or by a specific platform’s share count, take the first page, and apply your threshold client-side. This is deliberate: a fixed share threshold ages badly, because what counts as viral differs enormously between a niche music blog and a national outlet.
Why do share counts look too low on brand-new articles?
Social share scores are collected progressively over about two hours from the article’s publication time, so a story indexed minutes ago has only partial counts. Any ranking that compares fresh and mature articles on raw shares will be biased against the fresh ones. Either wait out the two-hour window before scoring, or use sort.by=engagement, which weighs timeliness alongside media and sentiment signals rather than relying on share counts alone.
What is the difference between person.name and entity.id?
person.name matches the extracted person entity by name, so two people sharing a name return in the same feed. entity.id matches one specific resolved entity, which is unambiguous. Resolve the id once through /v1/people?name= and store it — ids are stable, and the profile at /v1/people/{id} also returns a coverage block with article_count, momentum, sentiment, top_sources and top_topics that you would otherwise have to compute yourself.
How do I compare buzz across several celebrities?
Run the same request per name against /v1/news/count over a fixed time window and compare the numbers — one cheap request each, no article payloads. For a richer comparison, fetch /v1/people/{id} for each and read coverage.momentum.change_pct, which already expresses whether attention is rising or falling relative to the previous period. Then pull articles only for the names that moved, sorted by engagement, to see what caused the shift.