Fetch observations#
curl --fail-with-body --silent --show-error --max-time 30 "https://china-snapshot.com/api/datasets?dataset=social&limit=5"import json
from urllib.request import Request, urlopen
request = Request('https://china-snapshot.com/api/datasets?dataset=social&limit=5')
with urlopen(request, timeout=30) as response:
data = json.load(response)
print(json.dumps(data, ensure_ascii=False))const response = await fetch("https://china-snapshot.com/api/datasets?dataset=social&limit=5");
if (!response.ok) throw new Error(`HTTP ${response.status}`);
console.log(await response.json());Group correctly#
Use item_key with source to group repeated topics. The key hashes the source and normalized original title (or title fallback), so changes in wording can create a new key. Strip no additional semantic information. observed_at is the sampled time; rank and heat belong to that publisher.
Compare within the source#
Track observed rank, appearances and gaps. Do not compare heat values across platforms. WeChat heat is unavailable because historical values represented ordering rather than popularity. A missing observation is not a measured zero or proof the topic disappeared.
Interpret cautiously#
These are sampled hot lists, not distinct posts, representative opinion, reach or sentiment. The public field contract does not promise a separate board identifier; source identifies the retained source.