Operated by Sourcelane✓ verified
A scraper that collects and ranks trending short-form video content from TikTok and Instagram Reels, producing structured, row-oriented trend records that combine platform, source and region context with post metadata, engagement metrics, audio metadata, hashtags and creator statistics. It fetches country-specific trending feeds for TikTok and a global Reels feed for Instagram, extracts items’ URLs, captions, timestamps, content type and media references, captures views/likes/comments/shares/saves where available, captures audio title/author and whether the sound is original, and returns creator-level data including follower and lifetime-like counts plus top recent videos for discovered creators. The connector performs repeated requests to streaming trending feeds, removes duplicates across batches, ranks items in feed order, supports mixed runs across platforms and regional filters, and operates without requiring login credentials, cookies or accounts.
Verified Sep 28, 12:10 AM
$0.003
per trend
Up to 100 per call. Only pay for results returned; failed calls are refunded.
| Window | Uptime | Success rate | p50 | p95 | Calls |
|---|---|---|---|---|---|
| 24h | — | — | — | — | 0 |
| 7d | — | — | — | — | 0 |
| 30d | — | — | — | — | 0 |
Call it through Sourcelane's gateway or MCP server. We run the connector, apply your agent's spend guardrails, and bill only the results returned.
Call it via Sourcelane
curl -X POST https://cool-puffin-608.convex.site/v1/call \
-H "Authorization: Bearer sl_live_your_agent_key" \
-H "Content-Type: application/json" \
-d '{"listing":"tiktok-instagram-trends-scraper","params":{"sources":["tiktokVideos","instagramReels"]},"maxResults":10}'Request params
| Field | Type | Required | Description |
|---|---|---|---|
sources | array | required | Pick one or more trend feeds. Every row has the same columns, so a mixed run exports cleanly to CSV or Google Sheets. Use the 'source' column to split them. |
tiktokRegions | array | optional | 2-letter country codes (US, GB, JP, BR, DE,...). The feed is fetched once per country, as a viewer in that country would see it. Each country gets its own trend rank. |
maxTiktokVideosPerRegion | integer | optional | Stop after this many unique trending videos for each country. 0 = keep going until the feed stops returning new videos (bounded by the stop settings below). |
includeTiktokPhotoPosts | boolean | optional | TikTok's trending feed mixes in photo slideshows. Untick to keep only videos. |
onlyLocalTiktokVideos | boolean | optional | The feed for a country also contains global hits. Tick this to keep only videos whose creator is registered in the selected country (see the contentCountry column). Fewer results per request. Local-only videos are billed at a higher per-result rate (see the Pricing tab), because many more requests are needed per kept video. |
maxInstagramReels | integer | optional | Stop after this many unique trending Reels. Each request returns a small batch that overlaps earlier ones, so the connector keeps asking and removes duplicates. 0 = keep going until no new Reels show up. |
maxCreators | integer | optional | Stop after this many popular creators. 0 = all pages available for your filters. |
creatorCountry | string | optional | Only creators based in this country. Leave on 'Any country' for a global list. |
audienceCountry | string | optional | Only creators whose followers are mainly in this country. Useful for finding creators who reach your market. |
creatorFollowerRange | string | optional | Only creators within this follower range. |
creatorSortBy | string | optional | How popular creators are ranked. |
stopAfterCallsWithoutNew | integer | optional | Trending feeds return a fresh, overlapping batch on every request, and later requests repeat more and more earlier items. A feed stops once this many requests in a row add fewer than 5 new items. |
maxCallsPerFeed | integer | optional | Hard cap on requests for each feed (each TikTok country, the Reels feed and the creators list). Keeps runs with a 0 limit bounded. |
Each result contains
| Field | Type | Description |
|---|---|---|
type | string | — |
platform | string | Platform |
source | string | — |
region | null | Country |
trendRank | integer | Rank |
scrapedAt | string | Scraped |
id | string | — |
url | string | URL |
caption | string | Caption |
hashtags | array | Hashtags |
contentType | string | — |
postedAt | string | Posted |
durationSeconds | null | — |
views | null | Views |
likes | integer | Likes |
comments | integer | Comments |
shares | null | Shares |
saves | null | — |
authorUsername | string | Author |
authorName | null | — |
authorId | string | — |
authorUrl | string | — |
authorAvatarUrl | string | — |
authorFollowers | null | — |
authorTotalLikes | null | — |
audioTitle | null | Audio |
audioAuthor | null | — |
audioId | null | — |
audioIsOriginal | null | — |
coverUrl | string | Cover |
videoUrl | string | — |
contentCountry | null | — |
topVideos | array | — |
Pick your tool and connect in under a minute. Then just ask — for example: “What are the top 25 TikTok videos for 'protein coffee' this week, and what hooks do they use?”
Connect Claude
Web, desktop and mobile. Paste one URL.
Adds the Sourcelane MCP server with your key as a header.
claude mcp add --transport http sourcelane https://cool-puffin-608.convex.site/mcp \
--header "Authorization: Bearer sl_live_your_agent_key"Alternative to the connector URL: add to claude_desktop_config.json, then restart Claude.
{
"mcpServers": {
"sourcelane": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://cool-puffin-608.convex.site/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer sl_live_your_agent_key"
}
}
}
}Add to ~/.cursor/mcp.json (or Windsurf's mcp_config.json).
{
"mcpServers": {
"sourcelane": {
"url": "https://cool-puffin-608.convex.site/mcp",
"headers": {
"Authorization": "Bearer sl_live_your_agent_key"
}
}
}
}Save as .vscode/mcp.json. VS Code prompts for your key once.
{
"servers": {
"sourcelane": {
"type": "http",
"url": "https://cool-puffin-608.convex.site/mcp",
"headers": {
"Authorization": "Bearer ${input:sourcelane-key}"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "sourcelane-key",
"description": "Sourcelane agent key",
"password": true
}
]
}Create a GPT → Actions → Import from URL, then Authentication: API Key, Bearer.
https://sourcelane-amber.vercel.app/openapi.jsonOne POST. Pass maxResults to cap cost.
curl -X POST https://cool-puffin-608.convex.site/v1/call \
-H "Authorization: Bearer sl_live_your_agent_key" \
-H "Content-Type: application/json" \
-d '{"listing":"tiktok-instagram-trends-scraper","params":{"sources":["tiktokVideos","instagramReels"]},"maxResults":10}'Wrap the REST call as a tool, or point an MCP client at the endpoint.
import requests
res = requests.post(
"https://cool-puffin-608.convex.site/v1/call",
headers={"Authorization": "Bearer sl_live_your_agent_key"},
json={
"listing": "tiktok-instagram-trends-scraper",
"params": {"sources":["tiktokVideos","instagramReels"]},
"maxResults": 10,
},
timeout=300,
)
body = res.json()
print(body["receipt"]["chargedMicros"], "micro-USD for", body["receipt"]["results"], "results")
print(body["data"])—
0 reviews
Leave a review
Loading reviews…