Install the Up2Data skill

Teach Claude Code to integrate the Up2Data API. Installs once, then loads automatically whenever you ask it about Up2Data.

  1. Run this in your terminal
    bash
    mkdir -p ~/.claude/skills/up2data-api && curl -fsSL https://up2data.ai/docs/v1/skill.md -o ~/.claude/skills/up2data-api/SKILL.md
  2. Restart Claude CodeSo it picks up the new skill.
  3. Try it"Enrich these LinkedIn profiles with Up2Data and send results to my webhook"

Requires Claude Code. macOS, Linux, or WSL.

Prefer to read it first? View the skill file

Search companies

Live company search with structured filters.

POSThttps://api.up2data.ai/v1/search/companies
1 credit per page (up to 25 results)synchronous

Pass structured filters; at least one is required. Industry and location take LinkedIn IDs. Runs LinkedIn's regular company search, not Sales Navigator; use Search companies (Sales Navigator) for Sales Navigator results or to paste a Sales Navigator URL. meta.resolved_search_url is the equivalent LinkedIn search URL. Empty pages are free. A single call returns at most 100 results (pagination.has_more is true when more exist).

Warning

filters.company_types answers 400: live company search has no company type filter yet.

Info

Counts as 1 request against the 300/min per-key limit and 1 search against the 20/hour per-organization search quota. See Rate limits.

Info

Send many as batch operation items (operation search.companies.sales_nav, with body.filters); up to 1,000 results per item. See the batch endpoint.

#Request

FieldTypeNotes
filtersrequiredobjectStructured filter object; at least one field.
filters.keywordsstring
filters.industry_idsFacetId[]Bare id string, or { id, text } for a display label.
filters.location_idsFacetId[]HQ geography ids.
filters.company_sizesstring[]Enum per item: self-employed, 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+.
max_resultsintegerDefault 25. 1 to 1,000; a sync call returns at most 100 results (pagination.has_more is true when more exist).

#Call it

cURL
curl -X POST "https://api.up2data.ai/v1/search/companies" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "filters": {
    "industry_ids": [
      "96"
    ],
    "company_sizes": [
      "201-500"
    ]
  },
  "max_results": 50
}'

#Response

200
{
  "data": {
    "results": [{ "url": "https://www.linkedin.com/company/fintechfutures", "name": "FinTech Futures", "linkedin_id": "5216302", "industry": "Technology, Information and Media", "scraped_at": "2026-09-26T13:45:43.000Z" }],
    "pagination": { "returned": 50, "max_results": 50, "pages_scraped": 2, "has_more": true }
  },
  "meta": { "creditsUsed": 2, "creditsRemaining": 98415, "billed": true, "reason": "success", "requestId": "req_example", "latencyMs": 4100, "resolved_search_url": "https://www.linkedin.com/search/results/companies/?origin=FACETED_SEARCH&industryCompanyVertical=%5B%2296%22%5D&companySize=%5B%22E%22%5D" }
}

#Errors

StatusTypeWhenBilled
400invalid_requestMissing or empty filters, unknown filter, or bad enum value.No
401invalid_api_keyMissing, malformed, or revoked key.No
402insufficient_creditsBalance can't cover the page(s) requested.No
429rate_limitedOver the 300 requests/min limit, or the 20 searches/hour per-organization quota. Honor Retry-After.No
500internal_errorSomething broke on the server side.No
504upstream_timeoutThe live scrape didn't complete in time.No

See the Errors guide for every error type this version can return.