Skip to content

Douyin APIs - User Search (V2)

prod-global
GET
/api/douyin/search-user/v2

Enables searching for Douyin users by keyword, returning profiles with nickname, avatar, follower count, and other metadata.

Typical use cases:

  • Identifying creators and influencers
  • Competitive analysis and creator discovery

Parameters

NameInTypeRequiredDescription
tokenquerystringYesAccess token for this API service.
keywordquerystringYesThe search keyword.
pagequeryintegerNoPage number (starting from 1).
userTypequerystringNoFilter by user type.

Available Values:
- common_user: Common User
- enterprise_user: Enterprise User
- personal_user: Verified Individual User

Code Samples

💡 Environment Note

Default samples use https://api.justoneapi.com (prod-global). For users in Mainland China, it is recommended to replace it with http://47.117.133.51:30015 (prod-cn) for better performance. See Environment Guide.

bash
# Tip: For Mainland China, replace https://api.justoneapi.com with http://47.117.133.51:30015
curl -X GET "https://api.justoneapi.com/api/douyin/search-user/v2?token=YOUR_API_KEY&keyword=VALUE"
text
I want to use the "User Search (V2)" API from Just One API.
API Endpoint: https://api.justoneapi.com/api/douyin/search-user/v2
HTTP Method: GET
Authentication: Append "?token=YOUR_API_KEY" to the URL.
OpenAPI Definition: https://docs.justoneapi.com/openapi/douyin-apis/user-search-v2-en.json

Parameters:
- token (query): Access token for this API service. (Required)
- keyword (query): The search keyword. (Required)
- page (query): Page number (starting from 1).
- userType (query): Filter by user type.

Available Values:
- `common_user`: Common User
- `enterprise_user`: Enterprise User
- `personal_user`: Verified Individual User

Return format: JSON

Response Handling & Error Codes:
1. Business results should be determined by the "code" field in the response body (code 0 means success).
2. Timeout Recommendation: Set request timeout to at least 60 seconds.
3. Business Code Reference:
   - 0: Success
   - 100: Invalid or Inactive Token
   - 301: Collection Failed. Please Retry.
   - 302: Rate Limit Exceeded
   - 303: Daily Quota Exceeded
   - 400: Invalid Parameters
   - 500: Internal Server Error
   - 600: Permission Denied
   - 601: Insufficient Balance

Please help me write a script in my preferred programming language to call this API and handle the response.
python
# Tip: For Mainland China, replace https://api.justoneapi.com with http://47.117.133.51:30015
import requests

url = "https://api.justoneapi.com/api/douyin/search-user/v2?token=YOUR_API_KEY&keyword=VALUE"
response = requests.get(url)
print(response.json())
js
// Tip: For Mainland China, replace https://api.justoneapi.com with http://47.117.133.51:30015
const response = await fetch("https://api.justoneapi.com/api/douyin/search-user/v2?token=YOUR_API_KEY&keyword=VALUE", {
  method: "GET"
});
const data = await response.json();
console.log(data);
java
// Tip: For Mainland China, replace https://api.justoneapi.com with http://47.117.133.51:30015
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Main {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.justoneapi.com/api/douyin/search-user/v2?token=YOUR_API_KEY&keyword=VALUE"))
            .method("GET", HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
go
// Tip: For Mainland China, replace https://api.justoneapi.com with http://47.117.133.51:30015
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	client := &http.Client{}
	url := "https://api.justoneapi.com/api/douyin/search-user/v2?token=YOUR_API_KEY&keyword=VALUE"
	req, _ := http.NewRequest("GET", url, nil)
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
php
// Tip: For Mainland China, replace https://api.justoneapi.com with http://47.117.133.51:30015
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.justoneapi.com/api/douyin/search-user/v2?token=YOUR_API_KEY&keyword=VALUE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
$response = curl_exec($ch);
curl_close($ch);
echo $response;

Responses

json
{
  "code": 0,
  "data": {
    "business_data": [
      {
        "data_id": "0",
        "type": 999,
        "data": {
          "tab": null,
          "debug_data": {
            "filter_debug_info_list": null
          },
          "card_type": 4,
          "type": 999,
          "schema": "aweme://lynxview/?channel=morphling_high&bundle=channel_user%2Findex%2Ftemplate.js&group=morphling_h...",
          "log_data": {
            "dcm": "search.natural.discover.105246634576.20260309224145DCBF940783D6EB76DF04"
          },
          "ecom_goods_list": null,
          "music_info_list": null,
          "ops": null,
          "height": 80,
          "doc_type": 150,
          "provider_doc_id_str": "105246634576",
          "aweme_list": null,
          "card_style_type": 4,
          "card_protocal_struct": {
            "render_type": 1,
            "render_extra": {
              "type": 999,
              "card_type_name": "channel_user",
              "schema": "aweme://lynxview/?channel=morphling_high&bundle=channel_user%2Findex%2Ftemplate.js&group=morphling_h...",
              "height": 80
            }
          },
          "qishui_music_list": null,
          "shoot_position_list": null,
          "origin_type": 4,
          "provider_doc_id": 105246634576,
          "show_tab": null,
          "debug_diff_info": {},
          "send_back": "",
          "sub_card_list": null,
          "card_id": "douyin.doctype_aweme_user",
          "raw_data": "{\"is_red_uniqueid\":false,\"is_private_letter\":null,\"is_red_phone_number\":null,\"phone_number_encrypted...",
          "card_type_name": "channel_user"
        },
        "log": {
          "dcm": "search.natural.discover.105246634576.20260309224145DCBF940783D6EB76DF04"
        },
        "card_id": "douyin.doctype_aweme_user"
      }
    ],
    "render_info": [
      {
        "render_id": "0",
        "render_type": 1,
        "render_extra": {
          "card_type_name": "channel_user",
          "type": 999,
          "schema": "aweme://lynxview/?channel=morphling_high&bundle=channel_user%2Findex%2Ftemplate.js&group=morphling_h...",
          "height": 80
        },
        "ui_info": null
      }
    ],
    "struct": {
      "id": "00",
      "layout_type": 1,
      "children": [
        {
          "id": "0",
          "data_id": "0",
          "render_id": "0",
          "fp": ""
        }
      ],
      "fp": ""
    },
    "business_config": {
      "keyword": "小德MOMO",
      "has_more": 1,
      "is_filter_search": 1,
      "search_nil_info": null,
      "next_page": {
        "keyword": "小德MOMO",
        "search_request_id": "20260309224145DCBF940783D6EB76DF04",
        "search_id": "20260309224145DCBF940783D6EB76DF04",
        "cursor": 20,
        "poi_search_info": ""
      },
      "card_count": 19,
      "extra_fresh_struct": null,
      "ad_info": null,
      "filter_bar": null,
      "extra": {
        "hidden_filter": false,
        "req_start_ts": 1773067305361,
        "is_filter_search": 1
      },
      "feedback": {
        "url": "aweme://webview/?url=https%3A%2F%2Faweme.snssdk.com%2Ffalcon%2Ffe_app_react%2Fquestionnaire%2Findex....",
        "text_first": "找不到想找的帐号?",
        "text_second": "告诉我们"
      },
      "pre_loadmore_config": null,
      "poi_search_info": ""
    },
    "global_config": {
      "hidden_filter": false
    },
    "status_code": 0,
    "log_pb": {
      "impr_id": "20260309224145DCBF940783D6EB76DF04"
    },
    "extra": {
      "now": 1773067306000,
      "logid": "20260309224145DCBF940783D6EB76DF04",
      "fatal_item_ids": [],
      "search_request_id": "",
      "device_score": 0,
      "scenes": null
    },
    "log": {
      "search_id": "20260309224145DCBF940783D6EB76DF04",
      "impr_id": "20260309224145DCBF940783D6EB76DF04",
      "search_keyword": "小德MOMO"
    },
    "time_cost": {
      "stream_inner": 694
    },
    "path": "/aweme/v2/search/discover/",
    "mock_recall_path": "/aweme/v2/search/discover/",
    "success": true
  }
}

💡 Note: For list data, the example shows only 1-2 items for simplicity. The actual count depends on the API response.