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 people (Sales Navigator)

Search people with structured filters or a pasted Sales Navigator URL.

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

Two ways to search: pass structured filters, or paste a full Sales Navigator lead-search URL as sales_nav_url. Geo, industry, company, and school filters take LinkedIn IDs, not free text. Empty pages are free. A single call returns at most 100 results (pagination.has_more is true when more exist); for a bigger pull, send it as a search item in POST /v1/batch instead of looping sync calls.

Warning

Provide filters or sales_nav_url, never both, never neither.

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.people.sales_nav); up to 2,500 results per item, reserved at submission and refunded for any shortfall once the search runs. See the batch endpoint.

#Request

FieldTypeNotes
filtersobjectStructured filter object; see the fields below. Provide filters or sales_nav_url, never both, never neither.
filters.keywordsstring
filters.titlesstring[]
filters.past_titlesstring[]
filters.senioritiesstring[]Enum per item: owner, partner, cxo, vp, director, manager, senior, entry, training, strategic.
filters.function_idsstring[]LinkedIn FUNCTION ids, e.g. "25" for Sales.
filters.company_idsFacetId[]Bare id string, or { id, text } for a display label.
filters.past_company_idsFacetId[]
filters.company_sizesstring[]Enum per item: self-employed, 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+.
filters.industry_idsFacetId[]
filters.location_idsFacetId[]LinkedIn geo / REGION ids.
filters.school_idsFacetId[]
filters.years_of_experiencestring[]Enum per item: "1" through "5".
filters.years_at_current_companystring[]Enum per item: "1" through "5".
filters.years_in_current_positionstring[]Enum per item: "1" through "5".
filters.first_namestring
filters.last_namestring
filters.posted_on_linkedinboolean
filters.recently_changed_jobsboolean
sales_nav_urlstringFull Sales Navigator lead-search URL pasted from the browser. Mutually exclusive with filters.
max_resultsintegerDefault 100. 1 to 2,500; a sync call returns at most 100 results (pagination.has_more is true when more exist). For a bigger pull, send it as a search item in POST /v1/batch, which allows up to 2,500.

#Call it

cURL
curl -X POST "https://api.up2data.ai/v1/search/people/sales-nav" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "filters": {
    "titles": [
      "VP Sales"
    ],
    "seniorities": [
      "vp",
      "director"
    ],
    "location_ids": [
      {
        "id": "102095887",
        "text": "California"
      }
    ],
    "company_sizes": [
      "51-200",
      "201-500"
    ]
  },
  "max_results": 50
}'

#Response

200
{
  "data": {
    "results": [{
      "url": "https://www.linkedin.com/in/ACwAAAtrDxoBpU0UuxqsRapB-BUxVWrU38-8c0g",
      "full_name": "Tong Zhi",
      "location": { "city": "London", "region": "England", "country": "United Kingdom" },
      "positions": [{ "title": "Co-Founder & CTO", "company": "HireHarbour", "company_url": "https://www.linkedin.com/company/100124585", "linkedin_id": "100124585", "started_at": "2023-10", "ended_at": null, "description": "Helping businesses by finding experienced, high quality remote staff." }],
      "current_company": { "name": "HireHarbour", "url": "https://www.linkedin.com/company/100124585", "linkedin_id": "100124585", "title": "Co-Founder & CTO", "started_at": "2023-10" },
      "is_premium": true
    }],
    "pagination": { "returned": 10, "max_results": 10, "pages_scraped": 1, "has_more": true }
  },
  "meta": { "creditsUsed": 1, "creditsRemaining": 98418, "billed": true, "reason": "success", "requestId": "req_example", "latencyMs": 2800, "resolved_search_url": "https://www.linkedin.com/sales/search/people?query=(spellCorrectionEnabled:true,filters:List((type:CURRENT_TITLE,values:List((text:CTO,selectionType:INCLUDED)))),keywords:kubernetes)" }
}

#Errors

StatusTypeWhenBilled
400invalid_requestMalformed body, unknown filter, bad enum value, or both/neither of filters and sales_nav_url provided.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.