api
Read-only, unauthenticated endpoints for builders who want real-time viral video data.
Everything lives under /api/v1 and responds with JSON. You don’t need keys or OAuth. Use normal GET requests, respect rate limits (be kind), and cache when possible.
https://gewgool.com/api/v1
application/json
Fetch the hottest videos for a given recency window.
GET /api/v1/videos?period=day&limit=20
period – optional, one of hour, day, week, month, year. Defaults to 24 hours.limit – optional, 1–50 (default 10).{
"videos": [
{
"id": 123,
"title": "MrBeast's latest giveaway",
"author": "MrBeast",
"summary": "...",
"views": 2450033,
"likes": 450233,
"comments": 18002,
"thumbnail_url": "https://...",
"url": "https://gewgool.com/videos/mrbeast/mrbeast-latest-giveaway",
"source_url": "https://youtube.com/watch?v=...",
"posted_at": "2025-11-18T12:00:00Z",
"trending_score": 9132.4,
"hot_score": 6811.2,
"tags": ["giveaway","challenge"]
}
]
}
Quick hits for surface-level dashboards.
GET /api/v1/videos/movers?limit=5
GET /api/v1/videos/decliners?limit=5
Each returns the same video schema as the trending feed.
Use the same combo data that powers the video detail insights.
GET /api/v1/videos/insights
GET /api/v1/videos/insights?video_id=123
Without video_id you get movers, decliners, and author streaks. Passing a video ID fills in an engagement mix payload for charting.
GET /api/v1/authors/:author/videos?limit=10
Exact-match author results sorted by trending score. For multiword names, URL-encode the string (e.g., /api/v1/authors/caseoh/videos).
GET /api/v1/videos/:id
Direct access to a specific record by ID.