Get TikTok video details with download URLs (HD + watermark-free), user profiles, trending feeds, and search results via a simple REST API. 5,000 free requests/month.
- Get video details with direct MP4 download links (standard, watermarked, HD)
- Pull user profiles with follower stats, bio, linked socials, and verification status
- Browse trending videos by region
- Fetch any user's video history with pagination
- Search TikTok videos by keyword
- 30+ data points per video
- 5,000 requests/month on free tier
- Example Response:
{
"video_id": "7577398554101058824",
"region": "NP",
"caption": "#fyp #foryoupage #shinchan #dontletthisflop #viral",
"created_at": 1764250588,
"duration_seconds": 11,
"author": {
"user_id": "7277886691518465026",
"handle": "giaerra",
"display_name": "gītaa^̲̲̲",
"avatar_url": "https://p16-common-sign.tiktokcdn-us.com/..."
},
"media": {
"video_url": "https://v19.tiktokcdn-us.com/.../video.mp4",
"hd_video_url": "https://v16.tokcdn.com/.../video_hd.mp4",
"file_size_bytes": 784387,
"hd_file_size_bytes": 4552303
},
"stats": {
"views": 2152606,
"likes": 304735,
"comments": 728,
"shares": 60542,
"downloads": 531,
"saves": 22444
}
}Create an account at omkar.cloud to get your API key.
It takes just 2 minutes to sign up. You get 5,000 free requests every month for detailed TikTok data — more than enough for most users to get their job done without paying a dime.
This is a well built product, and your search for the best TikTok Scraper API ends right here.
curl -X GET "https://tiktok-scraper.omkar.cloud/tiktok/videos/details?video_url=https://www.tiktok.com/@giaerra/video/7577398554101058824" \
-H "API-Key: YOUR_API_KEY"{
"video_id": "7577398554101058824",
"region": "NP",
"caption": "#fyp #foryoupage #shinchan #dontletthisflop #viral",
"created_at": 1764250588,
"duration_seconds": 11,
"author": {
"handle": "giaerra",
"display_name": "gītaa^̲̲̲"
},
"media": {
"video_url": "https://v19.tiktokcdn-us.com/.../video.mp4",
"hd_video_url": "https://v16.tokcdn.com/.../video_hd.mp4",
"file_size_bytes": 784387,
"hd_file_size_bytes": 4552303
},
"stats": {
"views": 2152606,
"likes": 304735,
"comments": 728,
"shares": 60542,
"downloads": 531,
"saves": 22444
}
}pip install requestsimport requests
# Get video details with download URLs
response = requests.get(
"https://tiktok-scraper.omkar.cloud/tiktok/videos/details",
params={"video_url": "https://www.tiktok.com/@giaerra/video/7577398554101058824"},
headers={"API-Key": "YOUR_API_KEY"}
)
print(response.json())GET https://tiktok-scraper.omkar.cloud/tiktok/videos/details
| Parameter | Required | Default | Description |
|---|---|---|---|
video_url |
Yes | — | TikTok video URL. |
import requests
response = requests.get(
"https://tiktok-scraper.omkar.cloud/tiktok/videos/details",
params={"video_url": "https://www.tiktok.com/@giaerra/video/7577398554101058824"},
headers={"API-Key": "YOUR_API_KEY"}
)
print(response.json())Sample Response (click to expand)
{
"video_id": "7577398554101058824",
"region": "NP",
"caption": "#fyp #foryoupage #shinchan #dontletthisflop #viral",
"created_at": 1764250588,
"duration_seconds": 11,
"author": {
"user_id": "7277886691518465026",
"handle": "giaerra",
"display_name": "gītaa^̲̲̲",
"avatar_url": "https://p16-common-sign.tiktokcdn-us.com/..."
},
"media": {
"video_url": "https://v19.tiktokcdn-us.com/.../video.mp4",
"watermarked_video_url": "https://v19.tiktokcdn-us.com/.../video_wm.mp4",
"hd_video_url": "https://v16.tokcdn.com/.../video_hd.mp4",
"file_size_bytes": 784387,
"watermarked_file_size_bytes": 0,
"hd_file_size_bytes": 4552303
},
"thumbnails": {
"cover_url": "https://p19-common-sign.tiktokcdn-us.com/.../cover.jpeg",
"animated_cover_url": "https://p16-common-sign.tiktokcdn-us.com/.../animated.image",
"original_cover_url": "https://p16-common-sign.tiktokcdn-us.com/.../original.webp"
},
"audio": {
"audio_id": "7468606643236883217",
"title": "original sound - gwyneth.paita",
"artist": "gwyn",
"play_url": "https://v16-ies-music.tiktokcdn-us.com/.../audio.mp3",
"cover_url": "https://p16-common-sign.tiktokcdn-us.com/.../cover.jpeg",
"is_original": true,
"duration_seconds": 25,
"album": null
},
"stats": {
"views": 2152606,
"likes": 304735,
"comments": 728,
"shares": 60542,
"downloads": 531,
"saves": 22444
},
"is_advertisement": false,
"is_pinned": false
}GET https://tiktok-scraper.omkar.cloud/tiktok/videos/trending
| Parameter | Required | Default | Description |
|---|---|---|---|
market |
No | us |
Two-letter region code. |
max_results |
No | 10 |
Number of videos to return (max 20). |
import requests
response = requests.get(
"https://tiktok-scraper.omkar.cloud/tiktok/videos/trending",
params={"market": "us", "max_results": 10},
headers={"API-Key": "YOUR_API_KEY"}
)
print(response.json())Sample Response (click to expand)
{
"videos": [
{
"video_id": "7603384680255081758",
"region": "US",
"caption": "Lives in 🇺🇸USA #singlelife",
"created_at": 1770300964,
"duration_seconds": 5,
"author": {
"user_id": "7586897697803846711",
"handle": "leeou2011",
"display_name": "lejack.k",
"avatar_url": "https://p16-common-sign.tiktokcdn-us.com/..."
},
"media": {
"video_url": "https://v45.tiktokcdn-us.com/.../video.mp4",
"watermarked_video_url": "https://v45.tiktokcdn-us.com/.../video_wm.mp4",
"hd_video_url": null,
"file_size_bytes": 192786,
"watermarked_file_size_bytes": 505111,
"hd_file_size_bytes": null
},
"thumbnails": {
"cover_url": "https://p16-common-sign.tiktokcdn-us.com/.../cover.jpeg",
"animated_cover_url": "https://p16-common-sign.tiktokcdn-us.com/.../animated.image",
"original_cover_url": "https://p19-common-sign.tiktokcdn-us.com/.../original.webp"
},
"audio": {
"audio_id": "6774345467095451650",
"title": "I Need Your Love",
"artist": "Jake Coco & Madilyn Bailey",
"is_original": false,
"duration_seconds": 60,
"album": "The Covers, Vol. 6"
},
"stats": {
"views": 83370,
"likes": 3289,
"comments": 600,
"shares": 20,
"downloads": 44,
"saves": null
},
"is_advertisement": false,
"is_pinned": false
}
]
}GET https://tiktok-scraper.omkar.cloud/tiktok/users/profile
| Parameter | Required | Default | Description |
|---|---|---|---|
handle |
Yes | — | TikTok username (without the @). |
import requests
response = requests.get(
"https://tiktok-scraper.omkar.cloud/tiktok/users/profile",
params={"handle": "marvel"},
headers={"API-Key": "YOUR_API_KEY"}
)
print(response.json())Sample Response (click to expand)
{
"user": {
"user_id": "6857582733233931270",
"handle": "marvel",
"display_name": "Marvel Entertainment",
"bio": "Marvel social media manager",
"avatar_thumbnail_url": "https://p19-common-sign.tiktokcdn-us.com/.../100x100.webp",
"avatar_medium_url": "https://p16-common-sign.tiktokcdn-us.com/.../720x720.webp",
"avatar_large_url": "https://p19-common-sign.tiktokcdn-us.com/.../1080x1080.webp",
"is_verified": true,
"is_private": false,
"bio_link": "Marvel.com",
"instagram_handle": null,
"twitter_handle": null,
"youtube_channel_title": null,
"youtube_channel_id": null,
"account_created_at": 1596655540
},
"stats": {
"following_count": 0,
"follower_count": 14969237,
"total_likes": 207043170,
"video_count": 1883
}
}GET https://tiktok-scraper.omkar.cloud/tiktok/users/videos
| Parameter | Required | Default | Description |
|---|---|---|---|
handle |
Yes | — | TikTok username (without the @). |
max_results |
No | 10 |
Number of videos to return (max 30). |
page_cursor |
No | 0 |
Pagination cursor from a previous response. |
import requests
response = requests.get(
"https://tiktok-scraper.omkar.cloud/tiktok/users/videos",
params={"handle": "marvel", "max_results": 10},
headers={"API-Key": "YOUR_API_KEY"}
)
print(response.json())Sample Response (click to expand)
{
"videos": [
{
"video_id": "7609039378899356959",
"region": "US",
"caption": "Families across the #MCU ❤️ Stream their stories now on Disney+.",
"created_at": 1771617567,
"duration_seconds": 30,
"author": {
"user_id": "6857582733233931270",
"handle": "marvel",
"display_name": "Marvel Entertainment",
"avatar_url": "https://p19-common-sign.tiktokcdn-eu.com/..."
},
"media": {
"video_url": "https://v58.tiktokcdn-eu.com/.../video.mp4",
"hd_video_url": null,
"file_size_bytes": 2297146
},
"audio": {
"audio_id": "7609044615715670814",
"title": "original sound - marvel",
"artist": "Marvel Entertainment",
"is_original": true
},
"stats": {
"views": 63259,
"likes": 8504,
"comments": 132,
"shares": 258,
"downloads": 0,
"saves": 795
},
"is_advertisement": true,
"is_pinned": false
}
]
}GET https://tiktok-scraper.omkar.cloud/tiktok/videos/search
| Parameter | Required | Default | Description |
|---|---|---|---|
search_query |
Yes | — | Search keyword. |
market |
No | us |
Two-letter region code. |
max_results |
No | 10 |
Number of results (max 30). |
page_cursor |
No | 0 |
Pagination cursor from a previous response. |
import requests
response = requests.get(
"https://tiktok-scraper.omkar.cloud/tiktok/videos/search",
params={"search_query": "shinchan", "market": "us"},
headers={"API-Key": "YOUR_API_KEY"}
)
print(response.json())Sample Response (click to expand)
{
"videos": [
{
"video_id": "7596632332644355346",
"region": "KR",
"caption": "title: 짱구는 못말려 fanart timelapse #digitalart #shinchan #timelapse",
"created_at": 1768728802,
"duration_seconds": 15,
"author": {
"user_id": "7489111776035259410",
"handle": "official_dongbo",
"display_name": "officialdongbo",
"avatar_url": "https://p16-sign-sg.tiktokcdn.com/..."
},
"media": {
"video_url": "https://v16m.tiktokcdn.com/.../video.mp4",
"file_size_bytes": 1291134
},
"audio": {
"audio_id": "7218208687667316737",
"title": "Neon-colored City",
"artist": "Reo",
"is_original": false,
"album": "Neon-colored City"
},
"stats": {
"views": 114425,
"likes": 2527,
"comments": 121,
"shares": 369,
"downloads": 30
},
"is_advertisement": false,
"is_pinned": false
}
]
}response = requests.get(
"https://tiktok-scraper.omkar.cloud/tiktok/videos/details",
params={"video_url": "https://www.tiktok.com/@giaerra/video/7577398554101058824"},
headers={"API-Key": "YOUR_API_KEY"}
)
if response.status_code == 200:
data = response.json()
elif response.status_code == 401:
# Invalid API key
pass
elif response.status_code == 429:
# Rate limit exceeded
passVideo Details returns per video:
- Video ID, caption, region, creation timestamp, duration
- Direct MP4 download URLs (standard, watermarked, HD)
- File sizes for each video quality
- Thumbnail URLs (cover, animated, original)
- Author info (handle, display name, avatar)
- Audio/music details (title, artist, play URL, album)
- Engagement stats (views, likes, comments, shares, downloads, saves)
- Advertisement and pinned flags
User Profile returns:
- User ID, handle, display name, bio
- Avatar URLs in 3 sizes (thumbnail, medium, large)
- Verification and privacy status
- Bio link, linked social accounts (Instagram, Twitter, YouTube)
- Account creation date
- Follower count, following count, total likes, video count
Trending Feed returns a list of currently trending videos in any region, each with full video data as described above.
User Videos returns a paginated list of a user's posted videos with full metadata.
Video Search returns videos matching a keyword, with full video data and pagination.
All in structured JSON. Ready to use in your app.
Data is pulled from TikTok in real time. Every API call fetches live data — not cached or stale results. View counts, follower counts, video URLs, and engagement metrics reflect what's on TikTok right now.
Yes. The Video Details endpoint returns multiple MP4 download URLs:
video_url— watermark-free MP4watermarked_video_url— with TikTok watermarkhd_video_url— highest quality available (when the video supports it)
All URLs are direct CDN links. No redirects, no scraping needed.
Pass any two-letter country code as the market parameter. The Trending Feed and Video Search endpoints support regional filtering — get trending content from us, gb, jp, in, br, or any other TikTok market.
| Plan | Price | Requests/Month |
|---|---|---|
| Free | $0 | 5,000 |
| Starter | $25 | 100,000 |
| Grow | $75 | 1,000,000 |
| Scale | $150 | 10,000,000 |
Reach out anytime. We will solve your query within 1 working day.


