Discover by Profile URL
curl --request POST \
--url https://api.brightdata.com/datasets/v3/scrape \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"input": [
{
"url": "<string>",
"num_of_posts": 123,
"start_date": "<string>",
"end_date": "<string>",
"posts_to_not_include": [
"<string>"
],
"what_to_collect": "<string>"
}
]
}
'import requests
url = "https://api.brightdata.com/datasets/v3/scrape"
payload = { "input": [
{
"url": "<string>",
"num_of_posts": 123,
"start_date": "<string>",
"end_date": "<string>",
"posts_to_not_include": ["<string>"],
"what_to_collect": "<string>"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
input: [
{
url: '<string>',
num_of_posts: 123,
start_date: '<string>',
end_date: '<string>',
posts_to_not_include: ['<string>'],
what_to_collect: '<string>'
}
]
})
};
fetch('https://api.brightdata.com/datasets/v3/scrape', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.brightdata.com/datasets/v3/scrape",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'input' => [
[
'url' => '<string>',
'num_of_posts' => 123,
'start_date' => '<string>',
'end_date' => '<string>',
'posts_to_not_include' => [
'<string>'
],
'what_to_collect' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.brightdata.com/datasets/v3/scrape"
payload := strings.NewReader("{\n \"input\": [\n {\n \"url\": \"<string>\",\n \"num_of_posts\": 123,\n \"start_date\": \"<string>\",\n \"end_date\": \"<string>\",\n \"posts_to_not_include\": [\n \"<string>\"\n ],\n \"what_to_collect\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.brightdata.com/datasets/v3/scrape")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"input\": [\n {\n \"url\": \"<string>\",\n \"num_of_posts\": 123,\n \"start_date\": \"<string>\",\n \"end_date\": \"<string>\",\n \"posts_to_not_include\": [\n \"<string>\"\n ],\n \"what_to_collect\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.brightdata.com/datasets/v3/scrape")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"input\": [\n {\n \"url\": \"<string>\",\n \"num_of_posts\": 123,\n \"start_date\": \"<string>\",\n \"end_date\": \"<string>\",\n \"posts_to_not_include\": [\n \"<string>\"\n ],\n \"what_to_collect\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body[
{
"post_id": "7553300000000000000",
"description": "You won't believe what happened next #challenge",
"create_time": "2025-01-20T18:00:00.000Z",
"share_count": 120000,
"collect_count": 45000,
"comment_count": 32000,
"play_count": 85000000,
"video_duration": 120,
"hashtags": [
"#challenge"
],
"video_url": "https://v16-webapp-prime.tiktok.com/video/example.mp4",
"profile_username": "examplecreator",
"profile_url": "https://www.tiktok.com/@examplecreator",
"is_verified": true
}
]
TikTok
Discover by profile URL
Use the Bright Data Web Scraper API to discover by Profile URL. POST /datasets/v3/scrape starts a scraping job that returns the data as structured JSON records.
POST
/
datasets
/
v3
/
scrape
Discover by Profile URL
curl --request POST \
--url https://api.brightdata.com/datasets/v3/scrape \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"input": [
{
"url": "<string>",
"num_of_posts": 123,
"start_date": "<string>",
"end_date": "<string>",
"posts_to_not_include": [
"<string>"
],
"what_to_collect": "<string>"
}
]
}
'import requests
url = "https://api.brightdata.com/datasets/v3/scrape"
payload = { "input": [
{
"url": "<string>",
"num_of_posts": 123,
"start_date": "<string>",
"end_date": "<string>",
"posts_to_not_include": ["<string>"],
"what_to_collect": "<string>"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
input: [
{
url: '<string>',
num_of_posts: 123,
start_date: '<string>',
end_date: '<string>',
posts_to_not_include: ['<string>'],
what_to_collect: '<string>'
}
]
})
};
fetch('https://api.brightdata.com/datasets/v3/scrape', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.brightdata.com/datasets/v3/scrape",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'input' => [
[
'url' => '<string>',
'num_of_posts' => 123,
'start_date' => '<string>',
'end_date' => '<string>',
'posts_to_not_include' => [
'<string>'
],
'what_to_collect' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.brightdata.com/datasets/v3/scrape"
payload := strings.NewReader("{\n \"input\": [\n {\n \"url\": \"<string>\",\n \"num_of_posts\": 123,\n \"start_date\": \"<string>\",\n \"end_date\": \"<string>\",\n \"posts_to_not_include\": [\n \"<string>\"\n ],\n \"what_to_collect\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.brightdata.com/datasets/v3/scrape")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"input\": [\n {\n \"url\": \"<string>\",\n \"num_of_posts\": 123,\n \"start_date\": \"<string>\",\n \"end_date\": \"<string>\",\n \"posts_to_not_include\": [\n \"<string>\"\n ],\n \"what_to_collect\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.brightdata.com/datasets/v3/scrape")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"input\": [\n {\n \"url\": \"<string>\",\n \"num_of_posts\": 123,\n \"start_date\": \"<string>\",\n \"end_date\": \"<string>\",\n \"posts_to_not_include\": [\n \"<string>\"\n ],\n \"what_to_collect\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body[
{
"post_id": "7553300000000000000",
"description": "You won't believe what happened next #challenge",
"create_time": "2025-01-20T18:00:00.000Z",
"share_count": 120000,
"collect_count": 45000,
"comment_count": 32000,
"play_count": 85000000,
"video_duration": 120,
"hashtags": [
"#challenge"
],
"video_url": "https://v16-webapp-prime.tiktok.com/video/example.mp4",
"profile_username": "examplecreator",
"profile_url": "https://www.tiktok.com/@examplecreator",
"is_verified": true
}
]
Query Parameters
string
default:"gd_lu702nij2f790tmv9h"
required
The dataset ID used for this request.
Must be set to
gd_lu702nij2f790tmv9h to collect Discover by Profile URL data.string
default:"discover_new"
Must be set to
discover_new.string
default:"profile_url"
Must be set to
profile_url.boolean
default:false
Whether to send notifications when the request is completed.
boolean
default:true
Whether to include errors in the response.
Request Body
object[]
required
An array of input objects.
Show properties
Show properties
string
required
The URL of the TikTok profile to discover posts from.
number
The number of recent posts to collect. Missing value indicates no limit.
string
Start date filter in
MM-DD-YYYY format (should be earlier than end_date).string
End date filter in
MM-DD-YYYY format (should be later than start_date).string[]
Post IDs to exclude from the results.
string
Specifies what data to collect from each post.
Example
{
"input": [
{
"url": "https://www.tiktok.com/@mrbeast",
"num_of_posts": 10,
"start_date": "01-01-2025",
"end_date": "03-01-2025"
}
]
}
[
{
"post_id": "7553300000000000000",
"description": "You won't believe what happened next #challenge",
"create_time": "2025-01-20T18:00:00.000Z",
"share_count": 120000,
"collect_count": 45000,
"comment_count": 32000,
"play_count": 85000000,
"video_duration": 120,
"hashtags": [
"#challenge"
],
"video_url": "https://v16-webapp-prime.tiktok.com/video/example.mp4",
"profile_username": "examplecreator",
"profile_url": "https://www.tiktok.com/@examplecreator",
"is_verified": true
}
]
Was this page helpful?
⌘I