Report

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:

  • nasa report 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 restTokens field 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_state has 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 — opendata and verified — 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_FOUND channel not found on Snapchat

Response Object

AttributesType
report_statestringSnapchat report response
reportobjectSnapchat 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 stateDescription
READYReport 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 valueMeaning
BothField is present for both variants (sub-object window sets may still differ — noted per field)
Opendata onlyNo equivalent in verified; the key is still present but set to null (or {"data": null})
Verified onlyNo 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

AttributesTypePresence
versionstringBothopendata or verified, see Report versions
basicobjectBothgeneral information about the channel
metricsobjectBothchannel metrics and calculated metrics
featuresobjectBothrich data about channel

Basic Object

AttributesTypePresence
idstringBothchannel id
usernamestringBothchannel username
titlestringBothchannel title
avatar_urlstringBothchannel avatar url
descriptionstringBothchannel description
social_typeintBothsocial network type id (7)
external_urlsarrayBotharray of external URLs
is_verifiedbooleanBothwhether 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.

AttributesType
valueintNumber of total subscribers
performance.valueintnumber of new subscribers in a given period

subscribers_growth_prc — Both

Performance windows: 30d/90d/180d in both variants.

AttributesType
performance.valuefloatvalue in a given period
performance.markstringquality mark
performance.similarfloatvalue for similar accounts in a given period

Marks:

  • poor
  • fair
  • average
  • good
  • excellent

subscribers_growth — Verified only

AttributesType
performance.valueintabsolute subscriber growth in a given period
performance.value_previntabsolute growth in the previous period
performance.markstringquality mark
performance.similarfloatvalue for similar accounts

subscribers_conversion_rate — Verified only

AttributesType
valuefloatconversion rate, rounded to 2 decimals

views_count — Opendata only

Set to null for verified reports.

AttributesType
valueintvalue of views count
markstringquality mark
similarsintvalue for similar accounts
performance.valuefloatvalue in a given period
performance.markstringquality mark in a given period
performance.similarfloatvalue 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).

AttributesTypePresence
valueintBothvalue of views average
similarintBothvalue for similar accounts
markstringBothquality mark
value_story / mark_storyint / stringVerified onlystory-only view average and mark
value_spotlight / mark_spotlightint / stringVerified onlyspotlight-only view average and mark
performance.valueintBothvalue in a given period
performance.min / performance.maxintOpendata onlymin/max value in a given period

media_count — Opendata only

Set to null for verified reports.

AttributesType
performance.valueintvalue in a given period

media_per_week — Both

Performance windows differ: opendata uses 30d/90d/180d, verified uses 7d/30d/90d.

AttributesType
valueintcurrent average media/week
markstringquality mark
performance.valueintvalue in a given period

reach / reach_rate — Verified only

AttributesType
performance.valueint / floatvalue in a given period (reach is a count, reach_rate is a %)
performance.value_spotlight / value_storyint / floatvalue split by content type
performance.markstringquality mark

story_completion_rate — Verified only

AttributesType
valuefloatoverall story completion rate
performance.valuefloatvalue in a given period

story_skip_rate / story_exit_rate — Verified only

AttributesType
valuefloatoverall rate
performance.valuefloatvalue in a given period

story_rewatch_rate — Verified only

AttributesType
valuefloatoverall story rewatch rate
value_viewersfloatrewatch rate among unique viewers
performance.valuefloatvalue in a given period
performance.value_viewersfloatvalue among unique viewers in a given period

view_time_avg — Verified only

AttributesType
performance.valueintaverage view time (ms) in a given period
performance.value_spotlight / value_storyintvalue split by content type

shares_avg — Verified only

AttributesType
valueintoverall average shares
value_spotlight / value_storyintvalue split by content type
performance.valueintvalue 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).

AttributesType
data.media_ids.{media_type}.views_descobject with array of media_idsMedia IDs desc. sorted by views
data.media_ids.{media_type}.time_posted_descobject with array of media_idsMedia IDs desc. sorted by time posted
data.media_ids.{media_type}.{sort}.performance.{period}.media_idsArray of media_idsMedia IDs

blogger_emails — Both

List of blogger contact emails

AttributesType
dataarrayarray of emails.

blogger_geo — Both

Blogger geo if available

AttributesType
data.countrystringISO Alpha-2 two letter country code.
data.cityintcity id from https://www.geonames.org
data.stateintstate id from https://www.geonames.org

blogger_languages — Opendata only

Set to {"data": null} for verified reports.

AttributesType
dataarrayarray 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

AttributesType
data.performance.{period}arrayarray of hashtag objects {text: string, media_count: int, er_avg: float}

last_media — Both

AttributesType
data.{media_id}.basicobjectmedia basic info (url, media_url, time_posted, type)
data.{media_id}.metricsobjectviews_count, shares_count, likes_count, comments_count
data.{media_id}.features.hashtagsarrayhashtags used in the media

blogger_thematics — Verified only

AttributesType
dataarrayarray 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.

AttributesType
data.countriesarrayarray of {code: string, prc: float}
data.statesarrayarray 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.

AttributesType
dataobjectage 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.

AttributesType
dataarrayarray of {id: int, prc: float}

social_networks — Both

AttributesType
dataarrayarray of {type: int, id: string} objects.

Social networks ids map:

IdSocial network
1Instagram
2YouTube
3TikTok
4Twitch
5Twitter
7Snapchat

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.

Errors