Skip to content
looot docs
Esc
↑↓navigate↵open⌘Jpreview
On this page

AI Ark / Search companies by filters or lookalikes

AI Ark tool ai-ark-companies on looot: input fields, $0.0012 per result, output shape, and code to run it with curl, JavaScript or Python.

Searches 70+ million enriched, verified and active company profiles using account filters, ideal for building target-account (ABM) lists. Includes Lookalike Search: pass up to 5 domains or LinkedIn company URLs in lookalikeDomains to find similar companies. Credit Usage: 0.1 credits per returned result (Lookalike Search included). E.g. size: 100 with 100 matches = 10 credits. Tip: Each result includes a company id (UUID). Use these IDs in the People Search filter contact.company to find people working at exactly these companies, more precise than matching by name. Company Identification: Name or Domain, Domain, LinkedIn, URL, Name, Social Media Link, Phone Number Company Details: Industry, Location, Products and Services, Social Media, Company Type, Founded Year, Operation Language, Geo Location Financial & Size: Employee Size, Annual Revenue, Funding Advanced Filters: Keywords, Employee by Department, Headcount Growth, Technologies, NAICS Related Endpoints: • People Search, find the people at these companies (0.5/result) • Export People with Email, bulk-export those people with verified emails • Lists, exclude accounts you already work (free) Filter value lists: industries.csv (919) · technologies.csv (16,000+) · departments-and-functions.csv (592). All other allowed values are listed inline in the field

Inputs

Name Type Required Description
account object no Company filters, keyed by field. Every value wraps the real filter in the any/all DSL: { “<field>”: { “any”: { “include”: […] } } } (or “exclude” instead of “include”). Text fields (industries, technologies, name, url, productAndServices) take { “mode”: “WORD”|“SMART”, “content”: […] } in place of a bare array. Numeric-range fields (employeeSize, revenue, foundedYear) use a different wrapper: { “type”: “RANGE”, “range”: [ { “start”: 51, “end”: 200 } ] } – no any/include. A bare value lik…
lists object no Reference up to <strong>10 lists per request</strong> (each list holds up to <strong>10,000 items</strong>) to <strong>exclude</strong> the matching companies from your results.
lookalikeDomains array no Lookalike Search: provide up to 5 company domains or LinkedIn company URLs, and AI Ark returns companies similar to them. Combine with account filters to constrain the lookalikes (e.g. lookalikes of raisin.com, but only in Germany with 51-200 employees). json \{ "lookalikeDomains": ["raisin.com", "https://www.linkedin.com/company/n26"], "account": \{ "location": \{ "any": \{ "include": ["Germany"] \} \} \}, "page": 0, "size": 25 \}
page integer yes Required on People Search and Company Search (default 0). Zero-based page number. Use with size to paginate. The full result set is capped at 10,000 records per search, see the Lists pagination pattern above to go deeper. Example: 0
size integer yes Required on People Search and Company Search. Results per page: max 100. Default 10 on People Search / Company Search, 25 on Preview. On Export People with Email, size is the total export size, up to 10,000. Example: 10

Output

Shape of the run’s result, checked against 12 real answers:

{ last, size, sort: { empty, sorted, unsorted }, empty, first, number, content: ... ...

The shape is cut here. Signed in, looot inspect ai-ark-companies prints all of it.

Run it

Every call needs your API token in LOOOT_TOKEN; Sign in shows how to get one. Each run also needs a new idempotency key, so a retry never pays twice. With wait: 30 the answer comes back inline when the run ends within 30 seconds. Otherwise you get the running run back: poll GET /v1/runs/<runId>.

Example input with placeholder values:

curl -X POST "https://api.looot.ai/v1/runs" \
  -H "Authorization: Bearer $LOOOT_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"endpointId":"ai-ark-companies","input":{"page":0,"size":10,"account":{"location":{"any":{"include":["United States"]}},"industries":{"any":{"include":{"mode":"WORD","content":["software"]}}}}},"wait":30}'
const response = await fetch("https://api.looot.ai/v1/runs", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.LOOOT_TOKEN}`,
    "Content-Type": "application/json",
    "Idempotency-Key": crypto.randomUUID(),
  },
  body: JSON.stringify({
    endpointId: "ai-ark-companies",
    input: {
      page: 0,
      size: 10,
      account: {
        location: {
          any: {
            include: ["United States"],
          },
        },
        industries: {
          any: {
            include: {
              mode: "WORD",
              content: ["software"],
            },
          },
        },
      },
    },
    wait: 30,
  }),
});
const run = await response.json();
console.log(run.status, run.result);
import os
import uuid

import requests

response = requests.post(
    "https://api.looot.ai/v1/runs",
    headers={
        "Authorization": f"Bearer {os.environ['LOOOT_TOKEN']}",
        "Idempotency-Key": str(uuid.uuid4()),
    },
    json={
        "endpointId": "ai-ark-companies",
        "input": {
            "page": 0,
            "size": 10,
            "account": {
                "location": {
                    "any": {
                        "include": ["United States"],
                    },
                },
                "industries": {
                    "any": {
                        "include": {
                            "mode": "WORD",
                            "content": ["software"],
                        },
                    },
                },
            },
        },
        "wait": 30,
    },
    timeout=90,
)
run = response.json()
print(run["status"], run.get("result"))

To let looot pick among every provider of this job instead, send job:company.search as endpointId; see the job page.

Was this page helpful?