Kenso

Social searches

The Social searches endpoints of the Kenso API.

2 endpointsKen-Version: 1.1AuthenticationWorkspacesErrors

Run a social search

POST/v1/social-searchessocial-searches.create

Needs the social_data feature on your workspace. Until it is on, calls answer 404.

Try it on developer.ken.so

Runs one search on a platform: posts by a profile, company, page or group; jobs by keyword or company; people by name; ads, posts, profiles, channels, videos or companies by keyword; videos by hashtag or channel; a profile by username. Which fields a type needs, and which platforms run it, depend on the type: a missing field is 400 validation_failed naming it. limit caps the records (default 25, at most 100). Each record read on Kenso's key costs 0.15 credits; on your own social data key it is free. The same search within 24 hours answers the first one's records with keySource: cache, free. Answers 200 with status: ready, or 202 with status: running: get it with social-searches.get. Errors: 400 validation_failed, 402 insufficient_credits, 424 provider_key_failed, 429 daily_limit_reached, 503 social_data_unavailable. Needs Search edit.

Parameters

Name
In
Type
Required
Description
Ken-Version
In: header
string, one of: 2026-11-02, 1.1
optional
The API version, a date in YYYY-MM-DD form. 1.1 is another name for the first dated version. Leave it out to use your API key's pinned version. Keys created in the Kenso app are pinned to the newest version; keys minted by the CLI login are not. A key with no pinned version and no header gets the legacy shape where the path has one, and 404 where the path exists only in this version. A date that is not a version answers 400 unsupported_version; any other value that is not a version is treated as legacy.
X-Ken-Workspace-Id
In: header
integer (int64)
optional
The id of the workspace to act in. Leave it out when your API key reaches only one workspace. When the key reaches more than one, a request without this header answers 400 workspace_required. A workspace you are not a member of answers 404 not_found.

Request body

application/json, optional.

Field
Type
Required
Description
platform
string
optional
Required. linkedin, facebook, instagram, x, tiktok, youtube or crunchbase.
type
string
optional
Required. posts_by_profile, posts_by_company, jobs_by_keyword, jobs_by_company, people_by_name, posts_by_page, posts_by_group, ads_by_keyword, profile_by_username, posts_by_keyword, profiles_by_search, channels_by_keyword, videos_by_keyword, videos_by_hashtag, videos_by_channel or companies_by_keyword. Not every type runs on every platform.
url
string
optional
The profile, company, page, group or channel link a ..._by_profile, ..._by_company, ..._by_page, ..._by_group or ..._by_channel search reads.
keyword
string
optional
The words, username or hashtag a ..._by_keyword, ..._by_username, ..._by_hashtag or profiles_by_search search reads.
location
string
optional
A place to narrow a job or people search: Berlin, United States.
country
string
optional
A two-letter country code to narrow a search: us, de.
company
string
optional
A company name, for jobs_by_company. people_by_name reads only the first and last name.
firstName
string
optional
The first name for people_by_name.
lastName
string
optional
The last name for people_by_name.
since
string (date-time)
optional
Only records posted at or after this instant (UTC), on a search that reads posts, videos or jobs.
limit
integer (int32)
optional
The most records to read, 1 to 100. Default 25.

Response 200

Also answers 202. data is a SocialSearch.

Field
Type
Description
id
string
ssr_ and the search's number. The same search within 24 hours answers with the first one's id.
status
string
ready, running (Kenso is still reading: get it again) or failed (see errorCode).
platform
string
The platform searched.
type
string
The search type, such as posts_by_company.
records
array of SocialRecord
The records the search delivered, in the order it delivered them.
recordCount
integer (int32)
How many records the search delivered.
creditsCharged
number (double)
Credits the search charged so far: 0.15 per record read on Kenso's key, 0 on your own key. A repeat answered from a finished search shows 0; a repeat of one still running shows that search's charge, which is not charged again.
keySource
string
kenso (Kenso's key, charged per record), workspace (your own key, free) or cache (a repeat answered from the stored search, free).
errorCode
string
On a failed search: insufficient_credits, daily_limit_reached, provider_key_failed, social_data_unavailable or validation_failed.
createdAt
string (date-time)
Request
curl -X POST "https://api.ken.so/v1/social-searches" \
  -H "Authorization: Bearer $KEN_API_KEY" \
  -H "Ken-Version: 1.1" \
  -H "X-Ken-Workspace-Id: $KEN_WORKSPACE_ID" \
  -H "Content-Type: application/json" \
  -d '{
  "platform": "string",
  "type": "string",
  "url": "https://example.com",
  "keyword": "string",
  "location": "string",
  "country": "string",
  "company": "string",
  "firstName": "string",
  "lastName": "string",
  "since": "2026-09-23T15:02:11Z",
  "limit": 1
}'
Response 200
{
  "success": true,
  "data": {
    "id": "string",
    "status": "string",
    "platform": "string",
    "type": "string",
    "records": [
      {
        "id": "string",
        "platform": "string",
        "kind": "string",
        "url": "https://example.com",
        "externalId": "string",
        "handle": "string",
        "name": "string",
        "text": "string",
        "postedAt": "2026-09-23T15:02:11Z",
        "metrics": {
          "followers": 1,
          "likes": 1,
          "comments": 1,
          "shares": 1,
          "views": 1
        },
        "data": {
          "key": {
            "options": {},
            "parent": {},
            "root": {}
          }
        },
        "fetchedAt": "2026-09-23T15:02:11Z"
      }
    ],
    "recordCount": 1,
    "creditsCharged": 0.5,
    "keySource": "string",
    "errorCode": "string",
    "createdAt": "2026-09-23T15:02:11Z"
  }
}

Get a social search

GET/v1/social-searches/{socialSearchId}social-searches.get

Needs the social_data feature on your workspace. Until it is on, calls answer 404.

Try it on developer.ken.so

One search of this workspace. While status is running each read collects the records that are ready and answers 202; poll every few seconds. A finished search answers 200 with ready, or with failed and its errorCode. Another workspace's id, or a lookup's id, is 404 not_found.

Parameters

Name
In
Type
Required
Description
socialSearchId
In: path
string
required
Ken-Version
In: header
string, one of: 2026-11-02, 1.1
optional
The API version, a date in YYYY-MM-DD form. 1.1 is another name for the first dated version. Leave it out to use your API key's pinned version. Keys created in the Kenso app are pinned to the newest version; keys minted by the CLI login are not. A key with no pinned version and no header gets the legacy shape where the path has one, and 404 where the path exists only in this version. A date that is not a version answers 400 unsupported_version; any other value that is not a version is treated as legacy.
X-Ken-Workspace-Id
In: header
integer (int64)
optional
The id of the workspace to act in. Leave it out when your API key reaches only one workspace. When the key reaches more than one, a request without this header answers 400 workspace_required. A workspace you are not a member of answers 404 not_found.

Response 200

Also answers 202. data is a SocialSearch.

Field
Type
Description
id
string
ssr_ and the search's number. The same search within 24 hours answers with the first one's id.
status
string
ready, running (Kenso is still reading: get it again) or failed (see errorCode).
platform
string
The platform searched.
type
string
The search type, such as posts_by_company.
records
array of SocialRecord
The records the search delivered, in the order it delivered them.
recordCount
integer (int32)
How many records the search delivered.
creditsCharged
number (double)
Credits the search charged so far: 0.15 per record read on Kenso's key, 0 on your own key. A repeat answered from a finished search shows 0; a repeat of one still running shows that search's charge, which is not charged again.
keySource
string
kenso (Kenso's key, charged per record), workspace (your own key, free) or cache (a repeat answered from the stored search, free).
errorCode
string
On a failed search: insufficient_credits, daily_limit_reached, provider_key_failed, social_data_unavailable or validation_failed.
createdAt
string (date-time)
Request
curl -X GET "https://api.ken.so/v1/social-searches/string" \
  -H "Authorization: Bearer $KEN_API_KEY" \
  -H "Ken-Version: 1.1" \
  -H "X-Ken-Workspace-Id: $KEN_WORKSPACE_ID"
Response 200
{
  "success": true,
  "data": {
    "id": "string",
    "status": "string",
    "platform": "string",
    "type": "string",
    "records": [
      {
        "id": "string",
        "platform": "string",
        "kind": "string",
        "url": "https://example.com",
        "externalId": "string",
        "handle": "string",
        "name": "string",
        "text": "string",
        "postedAt": "2026-09-23T15:02:11Z",
        "metrics": {
          "followers": 1,
          "likes": 1,
          "comments": 1,
          "shares": 1,
          "views": 1
        },
        "data": {
          "key": {
            "options": {},
            "parent": {},
            "root": {}
          }
        },
        "fetchedAt": "2026-09-23T15:02:11Z"
      }
    ],
    "recordCount": 1,
    "creditsCharged": 0.5,
    "keySource": "string",
    "errorCode": "string",
    "createdAt": "2026-09-23T15:02:11Z"
  }
}