Company Research
curl --request POST \
--url https://win.oneshotagent.com/v1/tools/research/company \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"domain": "<string>",
"industry": [
"<string>"
],
"location": [
"<string>"
],
"size": "<string>",
"min_employee_count": 123,
"max_employee_count": 123,
"funding_stage": "<string>",
"tags": [
"<string>"
],
"limit": 123,
"linkedin_url": "<string>",
"ticker": "<string>"
}
'import requests
url = "https://win.oneshotagent.com/v1/tools/research/company"
payload = {
"name": "<string>",
"domain": "<string>",
"industry": ["<string>"],
"location": ["<string>"],
"size": "<string>",
"min_employee_count": 123,
"max_employee_count": 123,
"funding_stage": "<string>",
"tags": ["<string>"],
"limit": 123,
"linkedin_url": "<string>",
"ticker": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
domain: '<string>',
industry: ['<string>'],
location: ['<string>'],
size: '<string>',
min_employee_count: 123,
max_employee_count: 123,
funding_stage: '<string>',
tags: ['<string>'],
limit: 123,
linkedin_url: '<string>',
ticker: '<string>'
})
};
fetch('https://win.oneshotagent.com/v1/tools/research/company', 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://win.oneshotagent.com/v1/tools/research/company",
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([
'name' => '<string>',
'domain' => '<string>',
'industry' => [
'<string>'
],
'location' => [
'<string>'
],
'size' => '<string>',
'min_employee_count' => 123,
'max_employee_count' => 123,
'funding_stage' => '<string>',
'tags' => [
'<string>'
],
'limit' => 123,
'linkedin_url' => '<string>',
'ticker' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"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://win.oneshotagent.com/v1/tools/research/company"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"domain\": \"<string>\",\n \"industry\": [\n \"<string>\"\n ],\n \"location\": [\n \"<string>\"\n ],\n \"size\": \"<string>\",\n \"min_employee_count\": 123,\n \"max_employee_count\": 123,\n \"funding_stage\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"limit\": 123,\n \"linkedin_url\": \"<string>\",\n \"ticker\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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://win.oneshotagent.com/v1/tools/research/company")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"domain\": \"<string>\",\n \"industry\": [\n \"<string>\"\n ],\n \"location\": [\n \"<string>\"\n ],\n \"size\": \"<string>\",\n \"min_employee_count\": 123,\n \"max_employee_count\": 123,\n \"funding_stage\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"limit\": 123,\n \"linkedin_url\": \"<string>\",\n \"ticker\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://win.oneshotagent.com/v1/tools/research/company")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"domain\": \"<string>\",\n \"industry\": [\n \"<string>\"\n ],\n \"location\": [\n \"<string>\"\n ],\n \"size\": \"<string>\",\n \"min_employee_count\": 123,\n \"max_employee_count\": 123,\n \"funding_stage\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"limit\": 123,\n \"linkedin_url\": \"<string>\",\n \"ticker\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyResearch
Company Research
Discover companies by name, domain, industry, location, size, or funding stage, and enrich a single company from any identifier.
POST
/
v1
/
tools
/
research
/
company
Company Research
curl --request POST \
--url https://win.oneshotagent.com/v1/tools/research/company \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"domain": "<string>",
"industry": [
"<string>"
],
"location": [
"<string>"
],
"size": "<string>",
"min_employee_count": 123,
"max_employee_count": 123,
"funding_stage": "<string>",
"tags": [
"<string>"
],
"limit": 123,
"linkedin_url": "<string>",
"ticker": "<string>"
}
'import requests
url = "https://win.oneshotagent.com/v1/tools/research/company"
payload = {
"name": "<string>",
"domain": "<string>",
"industry": ["<string>"],
"location": ["<string>"],
"size": "<string>",
"min_employee_count": 123,
"max_employee_count": 123,
"funding_stage": "<string>",
"tags": ["<string>"],
"limit": 123,
"linkedin_url": "<string>",
"ticker": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
domain: '<string>',
industry: ['<string>'],
location: ['<string>'],
size: '<string>',
min_employee_count: 123,
max_employee_count: 123,
funding_stage: '<string>',
tags: ['<string>'],
limit: 123,
linkedin_url: '<string>',
ticker: '<string>'
})
};
fetch('https://win.oneshotagent.com/v1/tools/research/company', 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://win.oneshotagent.com/v1/tools/research/company",
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([
'name' => '<string>',
'domain' => '<string>',
'industry' => [
'<string>'
],
'location' => [
'<string>'
],
'size' => '<string>',
'min_employee_count' => 123,
'max_employee_count' => 123,
'funding_stage' => '<string>',
'tags' => [
'<string>'
],
'limit' => 123,
'linkedin_url' => '<string>',
'ticker' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"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://win.oneshotagent.com/v1/tools/research/company"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"domain\": \"<string>\",\n \"industry\": [\n \"<string>\"\n ],\n \"location\": [\n \"<string>\"\n ],\n \"size\": \"<string>\",\n \"min_employee_count\": 123,\n \"max_employee_count\": 123,\n \"funding_stage\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"limit\": 123,\n \"linkedin_url\": \"<string>\",\n \"ticker\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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://win.oneshotagent.com/v1/tools/research/company")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"domain\": \"<string>\",\n \"industry\": [\n \"<string>\"\n ],\n \"location\": [\n \"<string>\"\n ],\n \"size\": \"<string>\",\n \"min_employee_count\": 123,\n \"max_employee_count\": 123,\n \"funding_stage\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"limit\": 123,\n \"linkedin_url\": \"<string>\",\n \"ticker\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://win.oneshotagent.com/v1/tools/research/company")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"domain\": \"<string>\",\n \"industry\": [\n \"<string>\"\n ],\n \"location\": [\n \"<string>\"\n ],\n \"size\": \"<string>\",\n \"min_employee_count\": 123,\n \"max_employee_count\": 123,\n \"funding_stage\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"limit\": 123,\n \"linkedin_url\": \"<string>\",\n \"ticker\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyThese endpoints are async. You POST a request, get back a
All filters are optional, but you should pass at least one.
Fields that the data source does not have for a company come back as
At least one of
If no company matches, the job fails with
See Pricing for costs.
request_id, and poll GET /v1/requests/{request_id} until the job finishes.
All paid endpoints on this page accept optional
memo (≤ 1000 chars) and
decisionContext (object) body fields. Stored on the receipt for debugging
and audit — see Audit Trail.Company Search
POST /v1/tools/research/company
Find companies matching a set of filters. Flat price per search, not per result.
string
Company name (fuzzy match)
string
Company website domain (e.g.
stripe.com)string[]
Industries to filter by (max 50)
string[]
Locations to filter by, e.g.
["San Francisco", "Austin, TX"] (max 50)string
Employee size band, e.g.
"11-50", "51-200"number
Minimum employee count
number
Maximum employee count
string
Latest funding stage, e.g.
"seed", "series_a", "series_b"string[]
Tags to filter by (max 50)
number
default:"10"
Max results, 1-100
curl -X POST https://win.oneshotagent.com/v1/tools/research/company \
-H "Content-Type: application/json" \
-H "X-Payment-Proof: <signature>" \
-d '{
"industry": ["fintech"],
"location": ["san francisco"],
"funding_stage": "series_b",
"limit": 25
}'
Response Structure
{
"status": "completed",
"result": {
"results": [
{
"name": "Stripe",
"domain": "stripe.com",
"website": "https://stripe.com",
"industry": "financial services",
"employee_count": 8000,
"size": "5001-10000",
"location": "san francisco, california, united states",
"founded": 2010,
"headline": "Financial infrastructure for the internet",
"description": "...",
"tags": ["payments", "fintech"],
"total_funding_raised": 2200000000,
"latest_funding_stage": "series_i",
"linkedin_url": "linkedin.com/company/stripe"
}
],
"total_found": 1,
"filters": { "industry": ["fintech"], "location": ["san francisco"], "funding_stage": "series_b" }
}
}
null.
Company Enrichment
POST /v1/tools/enrich/company
Get the full profile of a single company from any one identifier.
string
Company website domain (e.g.
stripe.com)string
Company name
string
Company LinkedIn page URL
string
Stock ticker symbol
domain, name, linkedin_url, or ticker is required. domain gives the most reliable match.
curl -X POST https://win.oneshotagent.com/v1/tools/enrich/company \
-H "Content-Type: application/json" \
-H "X-Payment-Proof: <signature>" \
-d '{ "domain": "stripe.com" }'
Response Structure
Same fields as a search result, nested undercompany, plus naics codes and employee_count_by_country.
{
"status": "completed",
"result": {
"company": {
"name": "Stripe",
"domain": "stripe.com",
"industry": "financial services",
"employee_count": 8000,
"location": "san francisco, california, united states",
"naics": [{ "naics_code": "522320", "sector": "Finance and Insurance" }],
"employee_count_by_country": { "united states": 5200, "ireland": 900 }
}
}
}
Company not found.
SDK
const search = await agent.companySearch({
industry: ['fintech'],
location: ['san francisco'],
funding_stage: 'series_b',
limit: 25,
});
const { company } = await agent.enrichCompany({ domain: 'stripe.com' });