TikTok API
AvailableGet public TikTok profiles, videos, comments, followers, search, hashtags, trends, live data, and more through one stable API.
$2.50 per 1,000 requests. Your first 100 are free, no card needed.
curl "https://api.openhandle.dev/v1/tiktok/profiles/@pixel_orchard_tt_test" \
-H "Authorization: Bearer $OPENHANDLE_TEST_KEY"{
"platform": "tiktok",
"resource": "profile",
"capturedAt": "2026-09-29T14:06:45Z",
"source": "live",
"data": {
"id": "920000000001",
"secUid": "MS4wLjABAAAAd3eAbhETGLJaWjoI_ie0ajRYXo9kmwendjeABhEtGlJ",
"handle": "pixel_orchard_tt_test",
"displayName": "Pixel Orchard",
"bio": "Synthetic motion studies from an imaginary orchard.\n💌 orchard@example.openhandle.dev\nig: northstar_forge_test",
"extracted": {
"emails": [
"orchard@example.openhandle.dev"
],
"phones": [],
"links": [],
"handles": [
{
"platform": "instagram",
"handle": "northstar_forge_test"
}
]
},
"url": "https://www.tiktok.com/@pixel_orchard_tt_test",
"createdAt": null,
"avatar": {
"id": "iof-sliodg1-hnc-5814-tl/fc65k74qi411436018175n0d581e813z",
"url": "https://media.openhandle.dev/A0zqohwKl8k8rIemri4v1B1r3GOJv-qAmwyF80VqMYgEd2SieHGiEAEkNe1N9dAFg2d0ITyTQqenSJG7uqPZf0UttojfmKNiReXKcJrYlEH0bvgwB7DXKIBIkMF7WgpL__MGUGO7aKmUcIbsPisvjUV_XtHAEIHNczFuGCeLb53MAyXciKwMgZHDRiEuhnnvJboOQWDz6x_MbkY",
"width": null,
"height": null,
"size": null,
"hash": null,
"role": null,
"label": null,
"urls": null,
"renditions": [
{
"id": null,
"url": "https://media.openhandle.dev/A4Jv7Vq_R77cPNGWgrzHlu6QbQwq61NjapEjnxBDgT7L9VVXpIbbMNfb-iiszHSIDbrVV0MX7iRgSBOqLHmho6eYYnuZzV1jtsxJ4v3JHFSgAq2y4StCoU186YEfc1TlfuiUZuDxf8ieNxbmKjAvsoYsy3Qp5fReai4lpXBaMlg86-IzMy0KUZhu_2L4P1CiHecAr4_KSavN2SnZNahOVESR0bStG5A",
"width": null,
"height": null,
"size": null,
"hash": null,
"role": null,
"label": "Orchard",
"urls": [
"https://media.openhandle.dev/A0Ybns5sL6uPf7JctxakUI9ihxdl2ZMwJ39_I245xefR82QUqHos56BP46cXuK-I7YOlJCGaWpZaQTvuT0K7TFh4qem-kwxIY-ZIopqb95XMVL-k_0TyMWooxcY2UfR5cjQ3u_p4_nJG6KA_u1x4sXhxAdAKYP_o6VwOO6GuJjTUuAmXli3mes29VgbOjNvvVu1Tl7hPl9NaxNQFnwwfGuYyu3t2qak013LuQYQHvxFp",
"https://media.openhandle.dev/A9ZCfXoCYmbO4je5F-0hq15pLsISAc2T3pEDE6UciDLQLBIOblG3qG9Y8-Mwy173Z9vyq6a3lE83lx10kY91FyGJ2RvVZCXhIWXuGskSdHdFRheCSRnHtcd2WXYLhCEH-CzvOBC3WKByveAR-DvJ4Mu8tcrsPkLsyzpDvWWcFKfHCUbds6SwBoPE9d0ZqPUZ-pOVFZ0aeMb5pVjt_57dzB-eLWW7IBrEk8749f4WtJkF",
"https://media.openhandle.dev/A-_dba9Ui5cHNrp7hpKbWiokYHtX4zqUEc26xHRLGrVXk7ZVWfeBWHeytEA5FKx6jUr8hZRC0P5qjVjge6-4lmcHaic8Z1ebOsYVWefgoHhmZViPyyRKkQYCj42Kn4A4hAGqvMNImvm8b82w6jakopMLAzR_EG9KDalXOpjC4GwjBr66c3rgVROcU2zukCRzRCn3JDKZl8aXS4NuadfO6U-XDZf7QD4GtoaRq8rDMWdt"
],
"renditions": null
},
{
"id": null,
"url": "https://media.openhandle.dev/A7vrOTgA7g5qAH05dJOkGIxzoFZS6h9iutENeQ4DNX1U8x4V1_nH5Z4rTYdUj_ohvQ_JV3OoVPtBCcVaJmby24wUaWkgm4RXA-OsvGwBLDaeQXKywCtaIk20UoTDtkYXe3dJJe2NT2_42ZLdjEK2QtMGfz9B3NkAc88yDQXDrD-91XAbCXcFVFP7Jh2_RLUD_beFeFJ4JjxYHgZLpbONpuPDCU4R7jg",
"width": null,
"height": null,
"size": null,
"hash": null,
"role": null,
"label": "300x300",
"urls": [
"https://media.openhandle.dev/AyLeAe62nKCHPPO9RaHvhK2mMy66751lLuqHsCfQul-LhpjSbiaSGudh3O6WLNcIfdN4gwLGNccvA-zsIdeoIPZBPycLESSwUav_FJxizVOydibXsxpoexOTT00ImZoBiuqf0n4hKIkRafMbvfR8V9TaGWTzgKAbjKFWM43B1OzaparXSX8nqQuQH7uktLNdToTO4bckjw4ZuekcfOLj9lWiFWTGFn9G7gAUuxGnmgt2",
"https://media.openhandle.dev/A4Sq218F1BF2eIW8cjaPreJxbJJqpykpMow39-aSrG1aBlqyiF9fS0eevNV_ZIqrXRrpRuRy4K3yeQ9MdQUMnSYx06Zq93ZzD9-1Zx8idKwC7a2yJ6kdyYUSxCvhUH0n6h6dVA-YalDcseLw5JkPlRflRMcGZhTP3oAs_V2VdFd22SMWplYy3rSlFk1xNcuGYrFfhp2lCplGWXu5UFpH_rxFwRQoPesA1ihnU6efLlvU",
"https://media.openhandle.dev/A1ylyH8SSi_ok1XWENorHQQA-QYqWuw5rQhIeh-ba0LAIndw9hyRhZlUNaPmQ43jyDrO78mm-VjoC4qRIcq9hcQzv7RCezTxTGe1xCJr6WQoprLw2ic1L0EUmqmt7WWrTgzymUztfayZkbhW2W-APi3krU4-99BcxV2QmBNEr1HLDssquN-Ye-FP5OSlqDNZLCxANCmWi4vjCWGtvAdOsI_kzqXWUAv0MKjK7sK039Fo",
"https://media.openhandle.dev/A3i0Zel0qlBuwMZyCMMp-1_8g_RLQQ5eZwZ2v_5fg50nmshe3FGLE0o4eSrBthSVT6hOnx8MUE5718r2ruBkebYWtbYo7qHBcDpm_nktS8EqdPBh5I7bnksxsNa3vqhwoSeU-FXi0YJyuLaceKsLOEP7U-P6Yz_KvXVrIBtReGDnmRXX2gaoeV53XMT8PPK71ZuUU9KR2KhNgg1PFjfLXrbLtkP0TQd5RxFlKcWaWj_Y"
],
"renditions": null
},
{
"id": null,
"url": "https://media.openhandle.dev/A_nAvbVQcR0vuieAexFIzqju4XICbcURI-Cvux12TilgleIpWLv_3_mcBE7T6wkhrrJy2ZSoqjaA7W8g0czSCXGcUIPtAETwsC4oI8YFssRzE6KqMtgKcK9fDWYirA8e6ZD1iMUux-X7jjW1Agiq4v34P6iBMtiWYQgMZ97hRSjlMWk4oBbwz3PurbWFNHzjpitIacq6n9DAdYEN2jL8quPYCIkbXCI",
"width": null,
"height": null,
"size": null,
"hash": null,
"role": null,
"label": "168x168",
"urls": [
"https://media.openhandle.dev/A065GLq5dh5B348tCDe4PnHyE8emlChTbF-OKgv420hxudz6-hAk5yq1ly-NCKHkFTo4Dgmmdj6cc7ifyaDODPDrVr7Cp0a4jbq6OUhS0Ti_QgDzNJbnpgznrGyyNBuRKgR5DXRrdkXOcziwx8wdkUAwiA5H-zFkSBo8fUJgn0Y3J0Hf7-CfujWnSFifZqP_scxrlNCfvPx_pc1bn5kzIJOMJxj9ShJxjvzXwk92v_sc",
"https://media.openhandle.dev/Awduw_0wA6K9ftJoRIvfYOXP7R5Gx7nNPI4xK4iQVWT84C8l3pqEmlon92jJ1fISk8ZmKyo626EWxpCVytl-nDx8eXA61VeBhdngOTwJVn9tzDvKYhBn0lNVJmpS-TBLIyEtDeG-PVmL0Y-H-LobqrYZ2JjWuGhVphTainmZFzWz6t2fzFheaSBEszR8oYPt7qdFwyEAMEthG6YMk0ajXMNzcsZJISaP-GwKMxR0YvKM",
"https://media.openhandle.dev/A3no9ZVKBM5Cqvv9AynwOKuqu1D0uOGKVl-gd3UZSMxEnQ7r67SqklDOV6YVILOTJZVtDHeaYaUkCZWgIqP3wpkp47GOWEeyTNvF52QKgMUEu06CUCxG0V6CvkSgUjlCcs6K7USa9D279np-WYstlFrN5D8wR0IBSl-OOgbYUY4Y8U07bOdLGWVcXCl5cf6XHRty_z3RzZ5UAmy9Ai3YEyLR0DPBy43_Ywa60L4nt3FS"
],
"renditions": null
},
{
"id": null,
"url": "https://media.openhandle.dev/A9Dcpq-LxRfcGMVoKc056MXVQH4IoU-B2a0l1mNpzz-TaiX1JlOyQOAxIQrZ4NbZdmaoPzBOLnwYwxTMBIQXplx-jBANx_Ea2LdWceEFIXLvbPwP2m4d2fGKwMPdDOG1RR794gURhBoieOWgaZAd7JVtC4J1ooXHXolEXVjpEzh_Gad54rHIoJjTnpV6L_Exwe4GDHr3bxQ3GNHgz_nFUfiHqqptU24",
"width": null,
"height": null,
"size": null,
"hash": null,
"role": null,
"label": "Copper",
"urls": [
"https://media.openhandle.dev/A-F4ASzaxEppmeD2VyyA3AbIHGFxk6dUO_-_9BOJW4j5ZaL6n9nweUsjSyoMB-ro6qujfM_xLu4oXo_59Wm13KQECCYDTPoeaV0fTIhQaeLWTABL4_hhSgn12wuFQxzcds7M-sc8anzRGoCtIL4cTHq3gMnTZcD-BhMevf1URoYjhhd_fFhFMmDAMyqRI3kwgR1kdEPz627u02qSjoe18MESPb5CBbNgKyWqPS83k4HJ",
"https://media.openhandle.dev/A8pZH-OPNFWYcEomyFsWFkXHQY_W7BDjj2EXHLuFzHpp2v4OVgCJ6QDHQVSWHVtHRvwQDBajGtGz6FQQIroRHnUWyyF24Z41ne7zYRu3x9lKOsRmKPoMIBepY69VYG42lFYAqViTLD-es-Uvz8FBEeUIyAfgF3PccoW-jrpnJFuZbEn2haFqQiJ1bgOO67EPRk6BfHZ4lLpzXugKRgnzR1bveZDWsf_Rvo0z0P1dq16V",
"https://media.openhandle.dev/A383yPD5N_SgkBByNrQWLh5Qp-Tx4ZNNwbYdmWe1oZC_aAq6ouTqDWmW1BMXonlZMRk1LFXXQL8Pc9Sk9X-RY__gitFonrivB2Mw5CMU25Itw9s6ncZurgtdBPFB1i8ncpjfeF8S-7qxIINkfMKDk4ydfckFVg579ljZh5DlZ-kYn6svbXogvxhrtbW8wBav0qyf98UV6BvN1aI_2NB9r90qp4LF2wXb5cOhhEfRjYk_",
"https://media.openhandle.dev/AyNQYGOsLB2l_JPAU61YxeSrpn5sIgB78ZEOVHhd3lOX39LWGzZkNlnBNMFypCQ6p_AHMnk3v_5riDgckPwlbLj4eQQdPmpkgv9PanQ4CJE1mh5F5eTHTKeiiS3urB00wUd65hfc4kcsKMngo-xVl2eVccZHRwTszbGcOqwyoe-YeQseg8yfgF24HUvb3w7Ek1Hb95TQmIMg-SP7iWqTemqnXYr1qSP1R8kE2z-w5FTq"
],
"renditions": null
},
{
"id": null,
"url": "https://media.openhandle.dev/AybnhoWyCGnWnHxhvw2Wbo0RjxypKyvROyBigo-K7Q04SumLSR_8aqNNeMzT1MpSLJqD0cUCcdDgO99FEP3ykf8CpK72g4q-4krKuG90lLT83C5MeXZgR3Y8GpKwptBeS17B3xTZVZ946OahaPsE0hEZVqMwHDvAkz7x7tJqlCcQvfHALtXEvPHicfCt2WcKdHwl91ehQPr-0RjX1KtNprCm1qqlAzA",
"width": null,
"height": null,
"size": null,
"hash": null,
"role": null,
"label": "Harvest",
"urls": [
"https://media.openhandle.dev/AxRC9sHs23HA7h1eVDDmpPtNtEiCBh6f7B1omBT_82N8iLpOoCUWdKlmGFPiAsnc38RKTNofT4Z76PaXOn9WcdWlxKsXgeTB8wae4o_tTE6tUzeqvRsscPb-MVu7NtrfsPL4G2cd2t9WnsOtoxlQZooKIcWNj5-hylBDjEYj3cVXplP-MuGyWqLsyK9QH2AY5SocMvzRy6Av7uk_rMjV7OCcYEtetM-6dkpZPRipdb2T",
"https://media.openhandle.dev/AyQhqoNiHhoJCMU0SIYmtYYHZCFTmgw7RPvq-zr79RubJQMfgpJP3Ufd9IJ8GACWqp9iUmXbXQm7_A2rleE2V45C_v61II_OQ7gY8urE0Dytv3fxi3BikAdg5rsTteJydo5SzVjkyFS5kUBx3DwW-PMoE4WPK5QnrN7CJSUjniN6hj0z4BTNA6nXp0t9jHmy8QRGotGxNBnbpS058HU8pfC6ERsOUxruF8RnS5dkRSYJ",
"https://media.openhandle.dev/AzSFVXclaPy58fvTTZY8xwOj3EiX2OjtiZSDJwiAXKchQ67Zt6MaQShh_Iz9wm_B0VXxwpUpnHc0CRr1dPrC6Q3lMps0kawMWHuH0SohyGqGukRxR_ne7k9pKCBwgYySQmWwvaLTcrcbx6Ng4ouqSmpwQl7-Dpj2NFuYkiCF0oDYGrNiPFcRGDvtFgZRQAHeuujgq0U3WkV-C2pilQZqcM-2YqGGeS92QlZnHi34O72m",
"https://media.openhandle.dev/AwCjuYTdkuLMExDYQbZqLXrSK5VjtD4reduA4OuHcvRNNSluytOXmo-ZmL3qy1krY6DrXD_0V92l8on0_aooL-QXlipbAVc_daePKDQ4eP_n2NP4iTHMx_wUNdA5e71Qw97gSP774QEX8UWRu0wu7AKxf0R2YoAV8nLkUYJy3vBhmYaujepgTH_ROw8IH8_fWbQ5SVXU7koxRa0rmzOBKvAbkgssdZMK9psRUfqRziFg"
],
"renditions": null
}
]
},
"isPrivate": false,
"isVerified": true,
"accountType": 0,
"isEffectArtist": false,
"isAdVirtual": false,
"isStar": false,
"storyStatus": 0,
"isDisciplineMember": null,
"isCanceled": null,
"regionCode": "US",
"language": null,
"category": null,
"verification": {
"type": 1,
"badgeType": 1,
"label": "Synthetic creator",
"customLabel": null
},
"metrics": {
"followers": 75120,
"following": 411,
"posts": 4,
"visiblePosts": null,
"likes": 9814220,
"likedPosts": null
},
"commerce": {
"level": 2,
"hasLiveCommerce": false,
"hasNewProducts": false
},
"privacy": {
"followingVisibility": 1
},
"music": {
"metrics": {
"tracks": 6,
"uses": 0,
"likes": 0
},
"newReleaseIds": null
},
"predictions": {
"ageGroup": null
},
"searchContext": {
"description": null,
"name": null,
"nameField": null
},
"socialLinks": null,
"stories": {
"items": null,
"changedAt": null,
"metrics": {
"countsByPostType": null
}
}
}
}The real answer to this request with a free Test key. Test keys read a synthetic dataset, so your first call returns the same answer. Only the capture time and the signed media links differ.
Endpoints
Everything public on TikTok, 28 operations.
Profiles, posts, comments, and more, grouped by what they read. Each one is one call.
Profiles
7 operations- Get a profileGET /v1/tiktok/profiles/{identifier}
- List profile videosGET /v1/tiktok/profiles/{identifier}/posts
- List liked postsGET /v1/tiktok/profiles/{identifier}/liked-posts
- List followersGET /v1/tiktok/profiles/{identifier}/followers
- List followingGET /v1/tiktok/profiles/{identifier}/following
- List profile musicGET /v1/tiktok/profiles/{identifier}/music
- List playlist postsGET /v1/tiktok/profiles/{identifier}/playlists/{playlistId}/posts
Posts
3 operations- Get a videoGET /v1/tiktok/posts/{identifier}
- List commentsGET /v1/tiktok/posts/{identifier}/comments
- List replies to a commentGET /v1/tiktok/posts/{identifier}/comments/{commentId}/replies
Search
5 operations- Search profilesGET /v1/tiktok/search/profiles?q={query}
- Search postsGET /v1/tiktok/search/posts?q={query}
- Search hashtagsGET /v1/tiktok/search/hashtags?q={query}
- Search locationsGET /v1/tiktok/search/locations?q={query}
- Search musicGET /v1/tiktok/search/music?q={query}
Hashtags
2 operations- Get a hashtagGET /v1/tiktok/hashtags/{identifier}
- List hashtag postsGET /v1/tiktok/hashtags/{identifier}/posts
Locations
2 operations- Get a locationGET /v1/tiktok/locations/{id}
- List location postsGET /v1/tiktok/locations/{id}/posts
Music and audio
2 operations- Get musicGET /v1/tiktok/music/{id}
- List music postsGET /v1/tiktok/music/{id}/posts
Effects
1 operation- List effect postsGET /v1/tiktok/effects/{id}/posts
Trending
3 operations- List trending categoriesGET /v1/tiktok/trending/categories
- List trending musicGET /v1/tiktok/trending/music
- List trending postsGET /v1/tiktok/trending/posts
The complete 28-operation surface also covers liked posts, playlists, and effects. Every operation has its own generated page in the API reference.
Popular TikTok data
- Trend research
- Creator intelligence
- Campaign measurement
- Content monitoring
- Public content only.
- Regional and age restrictions can make otherwise public records unavailable.
FAQ
TikTok questions.
- Can I use TikTok data commercially without the Research API?
- Yes. Openhandle returns publicly visible TikTok data through its own API key, with no academic-access requirement.
- Does the API return real zeros?
- Yes. A measured zero stays zero; an unavailable metric is returned as null.
- Can I use a username instead of an ID?
- Yes. Put @username or the platform ID in any profile path, including /posts. Both forms return the same data.
- Are cursors shared with the upstream provider?
- No. Treat Openhandle cursors as opaque and pass them back unchanged.
Let your agent wire up TikTok.
Copy one prompt. It has the docs, the spec, and an example request. Your agent reads it and builds against your test key.
Send your agent ahead.
Paste the prompt into your agent and it sets everything up. Or come yourself, it takes five minutes.
100 free requests. No card needed.