Company Research
curl --request POST \
--url https://win.oneshotagent.com/v1/tools/find/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/find/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/find/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/find/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/find/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/find/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/find/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 & Enrich
Company Research
Discover companies by name, domain, industry, location, size, or funding stage, and enrich a single company from any identifier.
POST
/
v1
/
tools
/
find
/
company
Company Research
curl --request POST \
--url https://win.oneshotagent.com/v1/tools/find/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/find/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/find/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/find/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/find/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/find/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/find/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_bodyCompany Search finds companies by name, domain, industry, location, size, or funding stage. Enrich Company returns the full profile of one company from any single identifier. Both are async. POST a request, get a
All filters are optional, but pass at least one.
Fields not available for a company are
At least one of
Fields not available for a company are
See Pricing for costs.
request_id, and poll GET /v1/requests/{request_id} until the job finishes.
Both endpoints accept optional
memo (≤ 1000 chars) and decisionContext (object) body fields, stored on the receipt. See Audit Trail.Company Search
POST /v1/tools/find/company
Finds 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/find/company \
-H "Content-Type: application/json" \
-H "payment-signature: <base64 x402 payment>" \
-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. A search with no matches completes with an empty results array, not an error.
Enrich Company
POST /v1/tools/lookup/company-profile
Returns the full profile of one company from any single 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/lookup/company-profile \
-H "Content-Type: application/json" \
-H "payment-signature: <base64 x402 payment>" \
-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 }
}
}
}
null.
If no record is found, the job fails with error_code: enrichment_exhausted (HTTP 400). Retrying the same identifiers will not help. Supply a different one (domain gives the most reliable match).
SDK
const search = await agent.companyFind({
industry: ['fintech'],
location: ['san francisco'],
funding_stage: 'series_b',
limit: 25,
});
const { company } = await agent.companyProfile({ domain: 'stripe.com' });