← all tools
Data & sourcing

AI Ark

Search for companies, then for the people inside them.

AI Ark is a data and sourcing tool, and one of the 53 tools hyreflow connects to Claude, ChatGPT and other AI assistants. Through hyreflow, an AI agent can run 13 actions: 12 that look something up and 1 that creates or changes records. Paid AI Ark actions cost 0.01 to 1.4 credits per result or per request, from your hyreflow credit balance, so you need no AI Ark account, though you can connect your own key.

Cost per call0.01–1.4 cr
Your own keyoptional
CategoryData & sourcing

AI Ark works from the company downward: your agent finds firms matching your brief, then the people in the right roles, then their emails and mobiles. It runs in reverse too: hand it a number and it tells you whose it is.

AI Ark is one of the first tools hyreflow reaches for when you ask for a list from nothing.

What can you ask Claude or ChatGPT to do with AI Ark?

With hyreflow connected, you ask for the outcome in plain language and the assistant runs AI Ark for you. For example:

  • “Take this job brief url and build a first longlist using AI Ark and Prospeo”
  • “Find recruitment agencies in Manchester with 10 to 50 staff, then check who is hiring on TheirStack”
  • “Whose number is this?”
  • “Get mobiles for this shortlist and file the companies in Recruit CRM”

Which tools work well with AI Ark?

In a hyreflow run, AI Ark is most often paired with Prospeo, TheirStack, Enrichley and Recruit CRM.

  • Prospeo

    run both and merge, the coverage rarely overlaps completely

  • TheirStack

    add a hiring signal to a company list

  • Enrichley

    validate before anything sends

  • Recruit CRM

    file the companies and their contacts in one write

Which AI Ark actions can an AI agent run through hyreflow?

Through hyreflow, an AI agent can run 13 AI Ark actions: 12 that look something up and 1 that creates or changes records. Paid AI Ark actions cost 0.01 to 1.4 credits per result or per request, from your hyreflow credit balance, so you need no AI Ark account, though you can connect your own key.

AI Ark actionWhat it doesCost through hyreflow
Company searchLooks something up0.01 credits per result
Email finder resultsLooks something up0.034 credits per result
Email finder statisticsLooks something upfree
Find emailsLooks something up0.034 credits per result
Mobile phone finderLooks something up0.332 credits per request
People searchLooks something up0.05 credits per result
Reverse lookupLooks something up1.4 credits per request
Export peopleLooks something up0.06 credits per result
Export resultsLooks something upfree
Export singleLooks something up0.06 credits per result
Show all 13 AI Ark actions →
AI Ark actionWhat it doesCost through hyreflow
Export statisticsLooks something upfree
People analysisLooks something up0.266 credits per request
Save listCreates or changes a recordfree

One credit is priced on the pricing page. The full price list for every tool is in the pricing tables.

Which hyreflow skills use AI Ark?

63 hyreflow skills call AI Ark as part of the run. A skill is a whole pipeline your agent already knows, end to end.

Sourcing

Build Boolean and X-ray search strings from a job spec

use whenyou have a spec and want search strings you can paste into LinkedIn, Google or your ATS, without hand-typing forty title variants

SerperAI ArkProspeoLemlistApolloExa
starts from a job spec · 7 stepsget the prompt →
Sourcing

Find candidates who have said publicly that they are open to work

use whena role has to be filled fast and you want to start with the people who have raised a hand, without the open-to-work filter in LinkedIn Recruiter

AI ArkProspeoLeadMagicFullEnrichEnrichleyhyreflow Nativehyreflow Agent
starts from a job spec · 7 stepsget the prompt →
Sourcing

Find more candidates like the best person you ever placed

use whenyou can point at one person and say more like this, faster than you can write the brief that describes them

AI ArkProspeoLeadMagicExahyreflow AgentFullEnrichLusha
starts from a candidate · 8 stepsget the prompt →
Sourcing

Find the candidate one level below who is ready to step up

use wheneveryone who already holds the title is out of budget or not moving, and the realistic hire is someone one level below

AI ArkProspeoLeadMagichyreflow AgentFullEnrichEnrichley
starts from a job spec · 8 stepsget the prompt →
Sourcing

Map a whole talent pool, including the half that is not looking

use whenthe role is hard, the obvious search is exhausted, and you need to prove to a client that you have covered the market

AI ArkExaProspeoLushaPredictLeadsFullEnrichLeadMagic
starts from a job spec · 8 stepsget the prompt →
Sourcing

Run one candidate search across every people database at once

use whenone database keeps handing you the same names and you suspect the rest of the market is sitting in the others

AI ArkProspeoLemlistApolloLeadMagichyreflow AgentFullEnrich
starts from a job spec · 8 stepsget the prompt →

See all 63 skills that use AI Ark →

How does an AI agent know how to use AI Ark?

hyreflow ships a written playbook for AI Ark, and the agent loads it before the first call. Auth, rate limits, what each call costs, which actions need your approval, and the mistakes worth avoiding. It is the difference between an agent that knows the tool and one that guesses at it.

Read the AI Ark docs →
Show the raw playbookwritten for the agent

HOW in lib/aiark.py. Docs cached at reference/docs/aiark/raw/; full filter schema in reference/docs/aiark/raw/people_search.openapi.md.

Auth & config

  • Base URL: https://api.ai-ark.com/api/developer-portal/v1 · Auth: header X-TOKEN (env AIARK_API_KEY; never hardcode).
  • Rate limits: 5 req/s · 300/min · 18,000/hr.
  • All paths CONFIRMED from docs.ai-ark.com (ReadMe .md + llms.txt, Tier-2 plain HTTP). Watch the shapes: company search = POST /v1/companies (plural), email finder = POST /v1/people/email-finder, async status/results use {trackId} path segments and the results path is /inquiries, credits = GET /v1/payments/credits. Full endpoint index at reference/docs/aiark/raw/endpoints.md; people-search schema + enums at reference/docs/aiark/raw/people_search.openapi.md.

Filter structure (critical — from the official OpenAPI spec)

People search body = {account, contact, lists, page, size}; page (0-based) and size (≤100) are required. account/contact filters take an any and/or all wrapper, each with include/exclude:

  • Text filters → { "mode": "SMART"|"WORD"|"STRICT", "content": [...] } (e.g. account name, url, productAndServices, industries, technologies; contact fullName, skill, certification, title (under experience), language). The mode enum is SMART/WORD/STRICT — not "FUZZY".
  • String / enum filters → bare arrays { "include": [...] } (e.g. account domain, linkedin, location, naics, technology, type; contact seniority, departmentAndFunction, socialMedia, profileBadge).
  • Field names: the contact location field is contact.location (not contactLocation); titles/durations live under contact.experience.{latest,current,previous}.
  • Scope a people search to a company with account.domain / account.linkedin / account.name. contact.company.{latest,current,previous} takes company UUIDs and returns contaminated rows even for a correct UUID — use the account.* fields, with root domains.
  • A totalElements of ~414,000,000 means the filters were ignored (that's the whole database), not that you matched a lot. An unrecognized filter key is dropped silently behind a 200, so peek the count with size: 1 when trying a new filter shape: adding a filter must reduce it.
  • Enum lists (SeniorityLevel, DepartmentAndFunction, Industry, CompanyType, ProfileBadge, Language, TimeFrame) are in the cached spec.

Response shape: top-level { content: [...people...], pageable, totalElements, totalPages, number, size, trackId, first, last, empty } — read people at response["content"]; the find-emails trackId is top-level. Errors: 404 data-not-found; 501 = socialMediaFollower on a non-LinkedIn platform (only linkedin supported).

Async flows

  • Export people: export_people → trackId → poll export_statistics (DONE) → export_results (paginated).
  • Find emails: run people_search (returns trackId) → find_emails(trackId,+webhook) → poll email_finder_statistics → email_finder_results. trackId is single-use, expires ~6h.

Guardrails

  • mobile_phone_finder is expensive (0.332 credits/request) — use only on high-confidence matches. fetch_credit() reads your own AI Ark account and needs your own AI Ark key. Pilot small; gate bulk export/find-emails, and budget against hyreflow billing balance. A miss (no phone found) is not charged.
  • In a waterfall: AI Ark leads the people_search, linkedin_profile and phone_enrichment chains.

Handoff

Sourcing + enrichment: company→people search → email/phone (export/find-emails or mobile finder) → ATS/sequencer. Discover companies first, then people.

Field notes (production experience)

Field-shape note: these are vendor-native operational notes. The client returns the raw vendor JSON and uses the method names in this file — read field shapes accordingly (no normalized-wrapper / result.data. prefix).

Base URL: server is https://api.ai-ark.com/api/developer-portal; the people-search path is /v1/people, so the full URL is .../developer-portal/v1/people. BASE_URL folds /v1 in and people_search posts to people.

The filter shapes, mode enum (SMART/WORD/STRICT), field names, and response shape are documented from the spec in the Filter structure section above.

Credit costs (live): company search 0.01 credits/result; people search 0.05 credits/result; reverse lookup 1.4 credits/request; mobile phone finder 0.332 credits/request (use only after a high-confidence match); export/email-finder 0.034 credits/email; people analysis 0.266 credits/request; polling, statistics, results = free.

Async (export_people / find_emails): launch -> trackId -> poll *_statistics until state:"DONE" -> fetch *_results (paginated). find_emails trackId is single-use, expires 6h after the people_search that generated it.

Pagination: zero-based page + size (search/export use JSON body; results browsing uses query params). Errors: 409 = you fetched results while the async job is still running (poll statistics first); 404 = profile not found; 429 = rate limit (resets every 60s; limits 5/s, 300/min, 18k/hr). Constraints: export max 10,000 results; webhooks auto-retry up to 30x (respond 200 immediately, HTTPS only).

Callable surface — lib/aiark.py

Import: from lib.aiark import AiArk → instantiate AiArk() (reads key from env). Base: https://api.ai-ark.com/api/developer-portal/v1. Generic passthrough: request(method, path, *, params, json).

  • company_search(payload: dict) -> dict — POST /v1/companies — company search (CONFIRMED). Body: filters + page (0-based) + size (<=100).
  • email_finder_results(track_id: str, *, page: int | None = None, size: int | None = None) -> dict — GET /v1/people/email-finder/{trackId}/inquiries — paginated results
  • email_finder_statistics(track_id: str) -> dict — GET /v1/people/email-finder/{trackId}/statistics — job status (free, CONFIRMED).
  • export_people(payload: dict) -> dict — POST /v1/people/export — async export (filters + page + size 1..10000 + webhook).
  • export_results(track_id: str, *, page: int | None = None, size: int | None = None) -> dict — GET /v1/people/export/{trackId}/inquiries — paginated export results
  • export_single(payload: dict) -> dict — POST /v1/people/export/single — export one person with email by id OR url (CONFIRMED).
  • export_statistics(track_id: str) -> dict — GET /v1/people/export/{trackId}/statistics — export job status (free, CONFIRMED).
  • fetch_credit() -> dict — GET /v1/payments/credits — remaining credits on your own AI Ark account (needs your own AI Ark key).
  • find_emails(payload: dict) -> dict — POST /v1/people/email-finder — async email finder from a prior people_search trackId
  • mobile_phone_finder(payload: dict) -> dict — POST /v1/people/mobile-phone-finder — mobile by linkedin OR domain+name (+type).
  • people_analysis(payload: dict) -> dict — POST /v1/people/analysis — personality analysis from a LinkedIn profile url (CONFIRMED).
  • people_search(payload: dict) -> dict — POST /v1/people — people search (CONFIRMED path). Strict nested filter structure:
  • reverse_lookup(payload: dict) -> dict — POST /v1/people/reverse-lookup — look up a person by email/phone via search (CONFIRMED).
  • save_list(payload: dict) -> dict — POST /v1/lists — create/update a list (up to 10k items) for use in the people_search

Questions about AI Ark and hyreflow

Can I use AI Ark inside Claude or ChatGPT?

Yes. hyreflow is a connector for Claude, ChatGPT and other AI assistants. Once hyreflow is connected, you ask for the outcome in plain language and the assistant calls AI Ark for you. hyreflow exposes 13 AI Ark actions this way.

Do I need my own AI Ark account to use it with hyreflow?

No. hyreflow holds the AI Ark account and bills each action from your hyreflow credits. If you already pay for AI Ark, you can connect your own key instead, and hyreflow then charges no credits for those calls.

What does AI Ark cost through hyreflow?

Paid AI Ark actions cost 0.01 to 1.4 credits per result or per request, from your hyreflow credit balance, so you need no AI Ark account, though you can connect your own key. 4 actions are free. hyreflow can show the cost of a paid action before it runs.

How do I connect AI Ark to an AI agent over MCP?

Add the hyreflow MCP server to your assistant and sign in. hyreflow calls the AI Ark API directly and exposes its actions as tools the assistant can run, so there is no separate AI Ark server to install.

Connect hyreflow to your assistant →

Put AI Ark to work from one prompt

Connect hyreflow to Claude or ChatGPT and ask for the outcome. It reads the playbook above before it makes a single call.