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

Credits

The rate for every endpoint, and why a not-found target (422) is billed everywhere.

#How billing works

Up2Data charges by credit, one currency for every operation. Every successful response carries a meta block reporting exactly what that call cost; an error response skips meta and returns just {"error": {"type", "message", "requestId"}} instead, but a requestId is there either way:

json
"meta": {
  "creditsUsed": 1,
  "creditsRemaining": 98420,
  "billed": true,
  "reason": "profile_found",
  "requestId": "req_8f2ka91x"
}

#Rates

Endpoint Rate
POST /v1/profiles/enrich 1 credit, or 4 credits with with_followers_and_connections, with_full_skills_and_endorsements, or by listing followers_count, connections_count, or skill_endorsements in fields (none of these stack)
POST /v1/companies/enrich 1 credit
POST /v1/companies/jobs-count 1 credit
POST /v1/companies/posts 1 credit per returned post; empty pages are free
POST /v1/companies/headcount 1 credit
POST /v1/posts/enrich 1 credit
POST /v1/jobs/enrich 1 credit
POST /v1/posts/engagement/comments 1 credit per returned comment; empty pages are free
POST /v1/posts/engagement/reactions 1 credit per returned reaction; empty pages are free
POST /v1/posts/engagement/reposts 1 credit per returned repost; empty pages are free
POST /v1/profiles/activity 2 credits per call (one kind per call)
POST /v1/profiles/recommendations 1 credit per non-empty direction (both is up to 2); empty results are free
POST /v1/profiles/interests 1 credit per non-empty category (all is up to 5); empty results are free
POST /v1/search/people, POST /v1/search/people/sales-nav, POST /v1/search/people/standard 1 credit per page of up to 25 results; empty pages are free
POST /v1/search/companies, POST /v1/search/companies/sales-nav, POST /v1/search/companies/standard 1 credit per page of up to 25 results; empty pages are free
POST /v1/search/jobs 1 credit per job returned; zero results are free
POST /v1/search/posts 1 credit per page of up to 25 posts; empty pages are free
POST /v1/batch items profile, company, post, and Sales Navigator search items: 1 credit each (search items reserve max_results credits, refunded for any shortfall) - never refunded for a failed item. Every other operation item reserves the worst case at submission, matching its own sync rate above, and refunds down to what it actually billed once its queue settles - see the full table for exact numbers
GET /v1/batch/{job_id}, GET /v1/batch/{job_id}/results Free
GET /v1/account Free

#The billing rule

A not-found target is billed everywhere. Whenever Up2Data scrapes a target and finds it missing, private, deleted, or unreachable (422 unprocessable_target), that counts as billable work - on synchronous enrich (profiles/enrich, companies/enrich, posts/enrich, jobs/enrich), on profiles/activity, on companies/jobs-count, companies/posts and companies/headcount (1 credit), on the post engagement endpoints and on profiles/recommendations and profiles/interests (1 credit), on search/posts when the author_url or author_urn profile is unreachable (1 credit), and on every batch item. Outside a batch job, only 400, 401, 402, 429, 500, and 504 are never billed.

This is deliberately stricter than a pure pay-on-success model: the scrape ran and returned an answer, so it's billed like a hit. Only requests that return no data because of our failure (500, 504) or were rejected before any work started (400, 401, 402, 429) are free.

Info

A POST /v1/batch job reserves the worst case for every item at submission. A profile, company, post, or Sales Navigator search item never refunds for a failed item: a 422 unprocessable_target item bills at its type's rate just like a successful one, and so does an item that fails with a retryable error like 500 or 504. A Sales Navigator search item's unused max_results reservation is the only thing on those items that refunds, once that search runs. Every other operation item settles differently: it reserves the same worst case at submission, but refunds down to what it actually billed once its queue finishes, so a failed or empty item on those operations costs 0. See Batch jobs.

See Errors for the complete status table and Rate limits for what happens when you're throttled.