Social media and video data API

These records come from TikTok, YouTube, and Reddit. Each item comes back as one JSON record, with the field names its source uses. Together they return post, comment, video, community, transcript, profile, channel, and playlist records.

Sources
3
Record types
8
From
$1.80 per 1,000 records
The fields social media and video records carry, over a social media and video scene. The photograph is illustrative.

On every source here: title plays likes comments language

Which source returns which field: 10 field names across 3 sources
Which source returns which field, read from the records documented for each. A field shown as present can still be null on an item it does not apply to.
FieldTikTokYouTubeReddit
titledescription title title
playsplayCount viewCount score
likeslikeCount likeCount upvoteRatio
commentscommentCount commentCount commentCount
languagelanguage language language
authorauthor not on these recordsauthor
authorAvatarnot on these recordsauthorAvatar authorAvatar
avataravatar avatar not on these records
commentIdnot on these recordscommentId commentId
createdAtcreatedAt not on these recordscreatedAt

Sources

  • TikTok

    Creator profiles and video detail, as JSON records.

    • video
    • profile

    54 documented fields. From $3.30 per 1,000 records.

    Dataset pages: Profiles

  • YouTube

    Video detail, channels, comments, transcripts and search results, as JSON records.

    • video
    • comment
    • transcript
    • channel
    • playlist

    102 documented fields. From $1.80 per 1,000 records.

    Dataset pages: Transcripts, Comments, Channels

  • Reddit

    Posts, comment trees, community profiles and search results, as JSON records.

    • post
    • comment
    • community

    58 documented fields. From $1.80 per 1,000 records.

    Dataset pages: Comments

Record types by source

Each cell links to the field table for that record type on that source.

Record typeTikTokYouTubeReddit
postNot returnedNot returned36 fields
commentNot returned23 fields26 fields
video32 fields51 fieldsNot returned
communityNot returnedNot returned13 fields
transcriptNot returned23 fieldsNot returned
profile23 fieldsNot returnedNot returned
channelNot returned21 fieldsNot returned
playlistNot returned6 fieldsNot returned

Shared field names

Three field names are returned by all three sources. Field names that at least two sources return are below. The table shows the 12 most shared of 20. A shared name does not mean the same content: each source page says what its field holds. Every other field belongs to one source only.

FieldTikTokYouTubeReddit
commentCountYesYesYes
descriptionYesYesYes
languageYesYesYes
authorYesNoYes
authorAvatarNoYesYes
avatarYesYesNo
commentIdNoYesYes
createdAtYesNoYes
durationSecondsYesYesNo
hashtagsYesYesNo
isPinnedYesYesNo
isPrivateYesYesNo

Prices by record type

The lowest and highest price per 1,000 records for each record type across these sources. Each source page lists every billed event.

Record typeSourcesPer 1,000 records
postReddit$2.10
commentYouTube, Reddit$1.80 to $2.10
videoTikTok, YouTube$3.30 to $3.60
communityReddit$2.10
transcriptYouTube$5.00 to $6.25
profileTikTok$3.30
channelYouTube$3.60
playlistYouTube$3.60

Example request

A request to TikTok. The TikTok page shows the record it returns.

curl

curl -X POST https://api.urakimon.com/records/tiktok \
  -H "x-api-key: $URAKIMON_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "mode": "video",
    "videoUrls": [
      "https://www.tiktok.com/@example_user_1/video/7683649763480309022",
      "https://www.tiktok.com/@example_user_1/video/7683332577364643103"
    ]
  }'

Python

import os
import requests

res = requests.post(
    "https://api.urakimon.com/records/tiktok",
    headers={"x-api-key": os.environ["URAKIMON_API_KEY"]},
    json={
        "mode": "video",
        "videoUrls": [
            "https://www.tiktok.com/@example_user_1/video/7683649763480309022",
            "https://www.tiktok.com/@example_user_1/video/7683332577364643103"
        ]
    },
)
res.raise_for_status()
records = res.json()["records"]

Node

const res = await fetch("https://api.urakimon.com/records/tiktok", {
  method: "POST",
  headers: {
    "x-api-key": process.env.URAKIMON_API_KEY,
    "content-type": "application/json",
  },
  body: JSON.stringify({
    "mode": "video",
    "videoUrls": [
      "https://www.tiktok.com/@example_user_1/video/7683649763480309022",
      "https://www.tiktok.com/@example_user_1/video/7683332577364643103"
    ]
  }),
});
const { records } = await res.json();

More data