honesthook
Social data API
Eight platforms, read field by field. A free key with 1,000 credits a month, no card.
$ curl -H "Authorization: Bearer $HH_KEY" \ "https://honesthook.com/api/v1/instagram/profile?handle=nasa"
{
"success": true,
"platform": "instagram",
"endpoint": "instagram/profile",
"data": {
"author": {
"handle": "nasa",
"followers": 104395849,
"following": 91,
"posts_count": 4913,
"verified": true
}
}
}Real response, replayed from a recorded capture of instagram.com/nasa on 2026-09-07, through the same normalizer the live route uses. Live calls return today’s number.
01 — Why the field matters
Every platform ships more than one number for the same thing. Read the first one you find and you ship a rounded figure — or somebody else’s. These are the two cases we handle by name.
TikTok
stats.followerCount — rounded
1,600,000
statsV2.followerCount — exact
1,585,971
Both numbers are in the same page, for the same account — @nasa, captured 2026-09-07. stats is rounded to the hundred thousand; statsV2 carries the exact figure, as a string. stats appears first in the HTML, so the obvious regex matches the wrong one. We read statsV2.
first follower_count found
a board’s followers
ld+json · interactionStatistic.userInteractionCount
the account’s followers
Measured on pinterest.com/nasa, 2026-09-08: one profile page carries follower_count 42 times, with different values. One belongs to the account; the neighbours are boards, and a board’s count looks just as plausible. So we do not pattern-match at all — we read the ProfilePage block the page publishes as structured data.
02 — Status, including the red
Live from the same function /status reads, 9 sources. 4 more are switched off by decision and
are not listed: a red label next to a choice is an accusation,
not a state.
03 — Coverage
Each one lists the field we resolve and return as the count. If a platform is not on this list, we do not read it. The list is the live one: it comes from the same table the OpenAPI spec is built from, so a route that is switched off disappears from both.
Bluesky
followersCount
app.bsky.actor.getProfile
GitHub
followers
user object
follower_count
single anchor in the page
Linktree
— no follower count
no follower field exists
Mastodon
followers_count
the account's own instance
medium
socialStats.followerCount
not the rounded text
mainEntity.interactionStatistic.userInteractionCount
ld+json, not follower_count
soundcloud
followers_count
not followings_count
Threads
follower_count
one occurrence in 960 KB
TikTok
statsV2.followerCount
not stats, which is rounded
04 — The archive
3 niches, captured every hour since 5 September 2026. The most recent window holds 724 observations, and there were 24 windows in the last 24 hours.
05 — Price
Per credit we are ordinary. The difference is what it costs to find out — a key with 1,000 credits a month, issued on the page, with no card and no call.
Free
US$ 01,000 credits / month
No card. One key per address, renewed on the 1st.
per month
US$ 95,000 credits / month
US$ 1.80 per thousand credits.
per year
US$ 7960,000 credits / year
US$ 1.32 per thousand credits.
Entry price elsewhere. Each comparison page below carries the vendor’s cheapest paid plan as listed on their own pricing page, with the date it was checked. They are not repeated here on purpose: a price copied into a second place goes stale without anyone editing it.
apify · bright-data · ensembledata · scrapecreators · socialcrawl
06 — Start
01
Type your email
No card, no call. One key per address.
02
Copy the key
Issued on the page, in the response. 1,000 credits a month.
03
Send the request
curl -H "Authorization: Bearer $HH_KEY" \ "https://honesthook.com/api/v1/instagram/profile?handle=nasa"