Social searches
The Social searches endpoints of the Kenso API.
Get a social search
GET
/v1/social-searches/{socialSearchId}social-searches.getNeeds the social_data feature on your workspace. Until it is on, calls answer 404.
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"
}
}More in the API:Agent sandbox auto run settingsAgent sandbox connectionsAgent sandbox runsAgent workAgent work settingsAI feedbackBranching sequencesContact behaviorDeliverability rulesDelivery settingsLinkedIn job searchesLinkedIn jobsMessage templatesSaved list membersSequence importsSocial lookupsSocial recordsSocial resolutionsVoice note previewsVoice notesVoicesWhatsapp accountsWhatsapp settingsAll resources
Run a social search
/v1/social-searchessocial-searches.createNeeds the
social_datafeature 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
typeneeds, and which platforms run it, depend on the type: a missing field is 400validation_failednaming it.limitcaps 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 withkeySource: cache, free. Answers 200 withstatus: ready, or 202 withstatus: running: get it withsocial-searches.get. Errors: 400validation_failed, 402insufficient_credits, 424provider_key_failed, 429daily_limit_reached, 503social_data_unavailable. Needs Search edit.Parameters
YYYY-MM-DDform.1.1is 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, and404where the path exists only in this version. A date that is not a version answers400 unsupported_version; any other value that is not a version is treated as legacy.400 workspace_required. A workspace you are not a member of answers404 not_found.Request body
application/json, optional.linkedin,facebook,instagram,x,tiktok,youtubeorcrunchbase.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_channelorcompanies_by_keyword. Not every type runs on every platform...._by_profile,..._by_company,..._by_page,..._by_groupor..._by_channelsearch reads...._by_keyword,..._by_username,..._by_hashtagorprofiles_by_searchsearch reads.Berlin,United States.us,de.jobs_by_company.people_by_namereads only the first and last name.people_by_name.people_by_name.Response 200
Also answers
202.datais aSocialSearch.ssr_and the search's number. The same search within 24 hours answers with the first one's id.ready,running(Kenso is still reading: get it again) orfailed(seeerrorCode).posts_by_company.kenso(Kenso's key, charged per record),workspace(your own key, free) orcache(a repeat answered from the stored search, free).insufficient_credits,daily_limit_reached,provider_key_failed,social_data_unavailableorvalidation_failed.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 }'{ "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" } }