Research a company from its domain
Pull a company's profile, tech stack, recent news and known contacts for one domain, each fact tied to the provider that returned it, then write one brief.
This walks through the jobs behind the research-company skill: company.enrich,
company.technographics, company.news, people.domain.search and, with a LinkedIn page,
linkedin.company.profile. Run the ones your brief needs; skip the rest.
What it costs
Read each job’s price before you run it:
search {"filters": {"capability": "company.enrich"}, "prefer": "cheapest"}
On 2026-09-28 the cheapest listed prices were company.enrich around $0.0019 per call,
company.technographics around $0.01 per result, company.news under a cent per call, and
people.domain.search around $0.009 per call. Check the live numbers and balance before a batch
of companies.
Enrich the company
Send domain. company.enrich gives back name, industry and size.
run {"endpointId": "job:company.enrich", "input": {"domain": "example.com"}, "idempotencyKey": "research-example-enrich", "fallback": {"maxAttempts": 2, "maxCostUsd": 0.1}}curl -s "https://api.looot.ai/v1/runs?wait=20" \
-H "Authorization: Bearer $LOOOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"endpointId": "job:company.enrich",
"input": {"domain": "example.com"},
"idempotencyKey": "research-example-enrich",
"fallback": {"maxAttempts": 2, "maxCostUsd": 0.1}
}'looot run job:company.enrich --input '{"domain": "example.com"}' --waitRead normalized.fields.name, .domain, .industry and .size.
List its technologies
Same input, a different job:
run {"endpointId": "job:company.technographics", "input": {"domain": "example.com"}, "idempotencyKey": "research-example-tech", "fallback": true}curl -s "https://api.looot.ai/v1/runs?wait=20" \
-H "Authorization: Bearer $LOOOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"endpointId": "job:company.technographics",
"input": {"domain": "example.com"},
"idempotencyKey": "research-example-tech",
"fallback": true
}'looot run job:company.technographics --input '{"domain": "example.com"}' --waitThis job has no normalized map yet, so read the list of technologies from result directly.
Recent news
company.news also takes domain, or company (the name) if that is all you have:
run {"endpointId": "job:company.news", "input": {"domain": "example.com"}, "idempotencyKey": "research-example-news", "fallback": true}curl -s "https://api.looot.ai/v1/runs?wait=20" \
-H "Authorization: Bearer $LOOOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"endpointId": "job:company.news",
"input": {"domain": "example.com"},
"idempotencyKey": "research-example-news",
"fallback": true
}'looot run job:company.news --input '{"domain": "example.com"}' --waitRead the news items from result; there is no normalized map for this job yet, so field names
follow the provider that answered.
Known contacts at the domain
people.domain.search lists email addresses looot’s providers have already seen at that domain:
run {"endpointId": "job:people.domain.search", "input": {"domain": "example.com"}, "idempotencyKey": "research-example-contacts", "fallback": true}curl -s "https://api.looot.ai/v1/runs?wait=20" \
-H "Authorization: Bearer $LOOOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"endpointId": "job:people.domain.search",
"input": {"domain": "example.com"},
"idempotencyKey": "research-example-contacts",
"fallback": true
}'looot run job:people.domain.search --input '{"domain": "example.com"}' --waitCompany LinkedIn page (optional)
With the company’s LinkedIn URL in hand, linkedin.company.profile takes linkedin_url:
run {"endpointId": "job:linkedin.company.profile", "input": {"linkedin_url": "https://www.linkedin.com/company/example"}, "idempotencyKey": "research-example-linkedin", "fallback": true}Write the brief
One short brief: what the company does, its size and industry, its tech stack, the last few news
items with dates, and any contacts found. Name the provider behind each fact
(servedProviderId). End with the total spent, the sum of actualCost across every run.
What the answer looks like
| Field | What it is |
|---|---|
status |
completed, failed, queued, running |
outcome |
hit, weak, miss, error, rejected, skipped or pending |
servedProviderId |
the provider that answered |
actualCost |
what this run charged |
normalized.fields |
only on company.enrich: name, domain, industry, size |
route.summary |
fallback runs only |
company.technographics, company.news, people.domain.search and linkedin.company.profile
have no normalized map yet: read result directly and check the field names the provider used.
On a miss or error
company.enrichfinds nothing:outcomeismiss. Withfallback, the next provider tries inside the same hold.- A domain that resolves to nothing your providers cover: skip the step and say so in the brief. Don’t guess.
insufficient_balance: the run is blocked and not charged. Usetop_up, then retry with a newidempotencyKey.