HypeAuditor Snapchat Report
Endpoint
Get the report of a Snapchat channel:
GET https://hypeauditor.com/api/method/auditor.snapchat/?channel={channel}
Channel is Snapchat username (nasa) from the url of Snapchat channel (https://www.snapchat.com/add/nasa).
Returns the report if it’s ready or requests the report if it’s not ready.
Note:
nasareport is free, use it to test the API.- A report request costs 1 credit. If we cannot build a report due to reuqested social platform account restrictions or errors, 1 credit will be returned after the unsuccessful generation attempt. To check the number of remaining credits, please refer to
restTokensfield in the fetched response.- First check of the username costs 1 credit and the report will be accessible for 1 year. Next check after 365 days will also cost 1 credit.
Changelog
Important:
- Snapchat Report has added to HypeAuditor API since 31/08/2023.
- The object
report_statehas added to Endpoint since 07/01/2025.- Since 10/02/2025, 1 credit is charged per report request and refunded if the report generation attempt was unsuccessful.
- Since 06/07/2026, the report can come from two underlying data variants —
opendataandverified— see Report versions below. The response envelope is identical for both.
Error codes
You will receive error if requested channel is not found, has no videos or no views.
CHANNEL_NOT_FOUNDchannel not found on Snapchat
Response Object
| Attributes | Type | |
|---|---|---|
| report_state | string | Snapchat report response |
| report | object | Snapchat report data |
report_state
Stringreport_stateidentifies if the requested report is fully ready or lacks demographic data due to the low audience activity. List of report states:
| Report state | Description |
|---|---|
READY | Report is fully ready and contains all metrics |
Report versions
Snapchat reports are built from one of two underlying data variants: opendata and verified.
Both variants are returned through the exact same envelope — basic / metrics / features keep
the same keys either way — so existing integrations don't need to branch on the variant to keep
working. The report.version field tells you which variant you got, and the verified variant
additionally unlocks a richer set of metrics and features.
| Presence value | Meaning |
|---|---|
| Both | Field is present for both variants (sub-object window sets may still differ — noted per field) |
| Opendata only | No equivalent in verified; the key is still present but set to null (or {"data": null}) |
| Verified only | No equivalent in opendata; the key is simply absent from an opendata report's response |
Performance windows also differ by variant for metrics/features that use native windows: opendata
reports use 30d/90d/180d, verified reports use 7d/30d/90d. A few metrics
(subscribers_count, subscribers_growth_prc) always use 30d/90d/180d in both variants
because the API explicitly requests only those windows for them. This is called out per field
below where it matters.
Report Object
| Attributes | Type | Presence | |
|---|---|---|---|
| version | string | Both | opendata or verified, see Report versions |
| basic | object | Both | general information about the channel |
| metrics | object | Both | channel metrics and calculated metrics |
| features | object | Both | rich data about channel |
Basic Object
| Attributes | Type | Presence | |
|---|---|---|---|
| id | string | Both | channel id |
| username | string | Both | channel username |
| title | string | Both | channel title |
| avatar_url | string | Both | channel avatar url |
| description | string | Both | channel description |
| social_type | int | Both | social network type id (7) |
| external_urls | array | Both | array of external URLs |
| is_verified | boolean | Both | whether the channel is verified |
Metrics Object
Each metric object may contain a value field and a performance object with per-period values —
see Report versions for how the available windows differ by variant.
subscribers_count — Both
Performance windows: 30d/90d/180d in both variants.
| Attributes | Type | |
|---|---|---|
| value | int | Number of total subscribers |
| performance.value | int | number of new subscribers in a given period |
subscribers_growth_prc — Both
Performance windows: 30d/90d/180d in both variants.
| Attributes | Type | |
|---|---|---|
| performance.value | float | value in a given period |
| performance.mark | string | quality mark |
| performance.similar | float | value for similar accounts in a given period |
Marks:
poorfairaveragegoodexcellent
subscribers_growth — Verified only
| Attributes | Type | |
|---|---|---|
| performance.value | int | absolute subscriber growth in a given period |
| performance.value_prev | int | absolute growth in the previous period |
| performance.mark | string | quality mark |
| performance.similar | float | value for similar accounts |
subscribers_conversion_rate — Verified only
| Attributes | Type | |
|---|---|---|
| value | float | conversion rate, rounded to 2 decimals |
views_count — Opendata only
Set to null for verified reports.
| Attributes | Type | |
|---|---|---|
| value | int | value of views count |
| mark | string | quality mark |
| similar | sint | value for similar accounts |
| performance.value | float | value in a given period |
| performance.mark | string | quality mark in a given period |
| performance.similar | float | value for similar accounts in a given period |
views_avg — Both
value/similar/mark/performance.value are present in both variants. Verified reports also
expose story/spotlight breakdowns; opendata reports don't. Performance shape differs by variant: opendata
returns min/max per window (30d/90d/180d), verified returns only value per window
(7d/30d/90d).
| Attributes | Type | Presence | |
|---|---|---|---|
| value | int | Both | value of views average |
| similar | int | Both | value for similar accounts |
| mark | string | Both | quality mark |
| value_story / mark_story | int / string | Verified only | story-only view average and mark |
| value_spotlight / mark_spotlight | int / string | Verified only | spotlight-only view average and mark |
| performance.value | int | Both | value in a given period |
| performance.min / performance.max | int | Opendata only | min/max value in a given period |
media_count — Opendata only
Set to null for verified reports.
| Attributes | Type | |
|---|---|---|
| performance.value | int | value in a given period |
media_per_week — Both
Performance windows differ: opendata uses 30d/90d/180d, verified uses 7d/30d/90d.
| Attributes | Type | |
|---|---|---|
| value | int | current average media/week |
| mark | string | quality mark |
| performance.value | int | value in a given period |
reach / reach_rate — Verified only
| Attributes | Type | |
|---|---|---|
| performance.value | int / float | value in a given period (reach is a count, reach_rate is a %) |
| performance.value_spotlight / value_story | int / float | value split by content type |
| performance.mark | string | quality mark |
story_completion_rate — Verified only
| Attributes | Type | |
|---|---|---|
| value | float | overall story completion rate |
| performance.value | float | value in a given period |
story_skip_rate / story_exit_rate — Verified only
| Attributes | Type | |
|---|---|---|
| value | float | overall rate |
| performance.value | float | value in a given period |
story_rewatch_rate — Verified only
| Attributes | Type | |
|---|---|---|
| value | float | overall story rewatch rate |
| value_viewers | float | rewatch rate among unique viewers |
| performance.value | float | value in a given period |
| performance.value_viewers | float | value among unique viewers in a given period |
view_time_avg — Verified only
| Attributes | Type | |
|---|---|---|
| performance.value | int | average view time (ms) in a given period |
| performance.value_spotlight / value_story | int | value split by content type |
shares_avg — Verified only
| Attributes | Type | |
|---|---|---|
| value | int | overall average shares |
| value_spotlight / value_story | int | value split by content type |
| performance.value | int | value in a given period |
Features Object
most_media — Both
Lists of most media ids. Object media_ids includes spotlights, snaps and all. Each
media_ids object contains sorting by views_desc and time_posted_desc where a performance
object is included for given periods. Windows differ by variant (30d/90d/180d for opendata,
7d/30d/90d for verified).
| Attributes | Type | |
|---|---|---|
| data.media_ids.{media_type}.views_desc | object with array of media_ids | Media IDs desc. sorted by views |
| data.media_ids.{media_type}.time_posted_desc | object with array of media_ids | Media IDs desc. sorted by time posted |
| data.media_ids.{media_type}.{sort}.performance.{period}.media_ids | Array of media_ids | Media IDs |
blogger_emails — Both
List of blogger contact emails
| Attributes | Type | |
|---|---|---|
| data | array | array of emails. |
blogger_geo — Both
Blogger geo if available
| Attributes | Type | |
|---|---|---|
| data.country | string | ISO Alpha-2 two letter country code. |
| data.city | int | city id from https://www.geonames.org |
| data.state | int | state id from https://www.geonames.org |
blogger_languages — Opendata only
Set to {"data": null} for verified reports.
| Attributes | Type | |
|---|---|---|
| data | array | array of 2 letter lang codes |
blogger_hashtags — Opendata only
Set to {"data": null} for verified reports.
blogger_hashtags object contains performance object for given periods
| Attributes | Type | |
|---|---|---|
| data.performance.{period} | array | array of hashtag objects {text: string, media_count: int, er_avg: float} |
last_media — Both
| Attributes | Type | |
|---|---|---|
| data.{media_id}.basic | object | media basic info (url, media_url, time_posted, type) |
| data.{media_id}.metrics | object | views_count, shares_count, likes_count, comments_count |
| data.{media_id}.features.hashtags | array | hashtags used in the media |
blogger_thematics — Verified only
| Attributes | Type | |
|---|---|---|
| data | array | array of thematic tags, e.g. BRAND |
audience_geo — Verified only
This feature's data may be limited or unavailable. However, the underlying data may still be returned in the API response. Consumers are responsible for determining whether to rely on the returned data.
| Attributes | Type | |
|---|---|---|
| data.countries | array | array of {code: string, prc: float} |
| data.states | array | array of {id: int, title: string, prc: float} |
audience_age_gender — Verified only
This feature's data may be limited or unavailable. However, the underlying data may still be returned in the API response. Consumers are responsible for determining whether to rely on the returned data.
| Attributes | Type | |
|---|---|---|
| data | object | age bucket (e.g. "18-20") -> {male, female, unknown} percentages |
audience_thematics — Verified only
This feature's data may be limited or unavailable. However, the underlying data may still be returned in the API response. Consumers are responsible for determining whether to rely on the returned data.
| Attributes | Type | |
|---|---|---|
| data | array | array of {id: int, prc: float} |
social_networks — Both
| Attributes | Type | |
|---|---|---|
| data | array | array of {type: int, id: string} objects. |
Social networks ids map:
| Id | Social network |
|---|---|
| 1 | |
| 2 | YouTube |
| 3 | TikTok |
| 4 | Twitch |
| 5 | |
| 7 | Snapchat |
Requests
Set YOUR_ID and YOUR_TOKEN from HypeAuditor.
curl -X POST \
https://hypeauditor.com/api/method/auditor.snapchat \
-H 'content-type: application/x-www-form-urlencoded' \
-H 'x-auth-id: %YOUR_ID%' \
-H 'x-auth-token: %YOUR_TOKEN%' \
-d channel=nasa \
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://hypeauditor.com/api/method/auditor.snapchat',
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => [
'channel' => 'nasa'
],
CURLOPT_HTTPHEADER => [
'x-auth-id: YOUR_ID',
'x-auth-token: YOUR_TOKEN'
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo 'cURL Error #:' . $err;
} else {
echo $response;
}
Note:
You don’t need to pre-request the report from web, you can request it directly from API.
Sample request
GET https://hypeauditor.com/api/method/auditor.snapchat/?channel=redbull
Sample response
The sample below is a verified report — it's the superset variant, so it doubles as a
reference for every field described above. For an opendata report, the same envelope applies with
two differences: performance windows are 30d/90d/180d instead of 7d/30d/90d, and the
fields marked Opendata only above (metrics.views_count, metrics.media_count,
features.blogger_languages, features.blogger_hashtags) carry real data instead of null. The
fields marked Verified only above are simply absent from an opendata report's response.
{
"result": {
"report_state": "READY",
"report": {
"version": "verified",
"basic": {
"id": "2c437620-bc41-4095-b9f0-9328fa64a6e1",
"username": "redbull",
"title": "Red Bull",
"avatar_url": "https://cf-st.sc-cdn.net/aps/bolt/....jpeg",
"description": "#givesyouwiiings",
"social_type": 7,
"external_urls": ["www.redbull.com"],
"is_verified": true
},
"metrics": {
"subscribers_count": {
"value": 1768694,
"performance": {
"30d": { "value": 46394 },
"90d": { "value": 215394 },
"180d": { "value": 411494 }
}
},
"subscribers_growth_prc": {
"performance": {
"30d": { "value": 2.69, "mark": "excellent", "similar": 0.180066 },
"90d": { "value": 13.87, "mark": "excellent", "similar": 1.102181 },
"180d": { "value": 30.32, "mark": "excellent", "similar": 3.566809 }
}
},
"subscribers_growth": {
"performance": {
"7d": { "value": 13663, "value_prev": 11572, "mark": "none", "similar": null },
"30d": { "value": 57666, "value_prev": 81586, "mark": "none", "similar": null },
"90d": { "value": 244941, "value_prev": null, "mark": "none", "similar": null }
}
},
"subscribers_conversion_rate": {
"value": 0.06
},
"views_count": null,
"views_avg": {
"value": 133009,
"similar": null,
"mark": "none",
"value_story": 124775,
"mark_story": "average",
"value_spotlight": 167120,
"mark_spotlight": "none",
"performance": {
"7d": { "value": 0 },
"30d": { "value": 35677 },
"90d": { "value": 173164 }
}
},
"reach": {
"performance": {
"7d": { "value": 2926182, "value_spotlight": 2926156, "value_story": 26, "mark": "none" },
"30d": { "value": 12052791, "value_spotlight": 12052669, "value_story": 122, "mark": "none" },
"90d": { "value": 50533438, "value_spotlight": 50532890, "value_story": 548, "mark": "none" }
}
},
"reach_rate": {
"performance": {
"7d": { "value": 165.44, "mark": "none" },
"30d": { "value": 681.45, "mark": "none" },
"90d": { "value": 2857.1, "mark": "none" }
}
},
"story_completion_rate": {
"value": 0.0,
"performance": {
"7d": { "value": null },
"30d": { "value": null },
"90d": { "value": null }
}
},
"story_skip_rate": {
"value": 0.34,
"performance": {
"7d": { "value": null },
"30d": { "value": null },
"90d": { "value": null }
}
},
"story_exit_rate": {
"value": 0.28,
"performance": {
"7d": { "value": null },
"30d": { "value": null },
"90d": { "value": null }
}
},
"story_rewatch_rate": {
"value": 0.06,
"value_viewers": 0.31,
"performance": {
"7d": { "value": null, "value_viewers": null },
"30d": { "value": null, "value_viewers": null },
"90d": { "value": null, "value_viewers": null }
}
},
"view_time_avg": {
"performance": {
"7d": { "value": 10150, "value_spotlight": 20299, "value_story": 0 },
"30d": { "value": 9869, "value_spotlight": 19737, "value_story": 0 },
"90d": { "value": 9913, "value_spotlight": 18671, "value_story": 1154 }
}
},
"shares_avg": {
"value": 84,
"value_spotlight": 224,
"value_story": 36,
"performance": {
"7d": { "value": 0 },
"30d": { "value": 45 },
"90d": { "value": 220 }
}
},
"media_count": null,
"media_per_week": {
"value": 3,
"mark": "none",
"performance": {
"7d": { "value": 3 },
"30d": { "value": 3 },
"90d": { "value": 3 }
}
}
},
"features": {
"most_media": {
"data": {
"media_ids": {
"all": {
"views_desc": {
"performance": {
"7d": { "media_ids": ["..."] },
"30d": { "media_ids": ["..."] },
"90d": { "media_ids": ["..."] }
}
}
}
}
}
},
"blogger_emails": { "data": ["[email protected]"] },
"blogger_geo": { "data": { "country": "at", "city": null, "state": null } },
"blogger_languages": { "data": null },
"blogger_hashtags": { "data": null },
"last_media": {
"data": {
"W7_EDlXWTBiXAEEniNoMPwAAYZG9wc3Nia252AZ8d-cNrAZ8d-cM3AAAAAQ": {
"basic": {
"id": "W7_EDlXWTBiXAEEniNoMPwAAYZG9wc3Nia252AZ8d-cNrAZ8d-cM3AAAAAQ",
"url": "https://cf-st.sc-cdn.net/d/....IRZXSOY",
"media_url": "https://cf-st.sc-cdn.net/d/....IRZXSOY",
"time_posted": "2026-07-01T13:58:55.543Z",
"type": "spotlight"
},
"metrics": {
"views_count": 0,
"shares_count": 0,
"likes_count": 0,
"comments_count": 0
},
"features": { "hashtags": [] }
}
}
},
"blogger_thematics": { "data": ["BRAND"] },
"audience_geo": {
"data": {
"countries": [{ "code": "us", "prc": 23.78 }],
"states": [{ "id": 4736286, "title": "Texas", "prc": 1.49 }]
}
},
"audience_age_gender": {
"data": { "18-20": { "male": 10.52, "female": 3.54, "unknown": 0.88 } }
},
"audience_thematics": { "data": [{ "id": 67, "prc": 75.76 }] },
"social_networks": {
"data": [{ "type": 7, "id": "redbull" }]
}
}
},
"restTokens": 871
}
}
highDemand field is “true” when HypeAuditor experiences unexpected high load that effects report generation time negatively. When you receive that field you may want to inform your users that the delay is temporary and we’re fixing it. Everything will go back to normal and all requests are safe.