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

Get profile interests

Get what a profile follows: top voices, companies, groups, newsletters, and schools.

POSThttps://api.up2data.ai/v1/profiles/interests
1 credit per non-empty categorycategory all is up to 5; empty results are freesynchronous

Works like profile recommendations with a category parameter in place of direction. Identify the profile with url or urn; provide exactly one. Each requested category comes back as its own block with its own pagination. A block with no interests has an empty list and no pagination.

Info

Send many as batch operation items (operation profiles.interests); billed per non-empty category, same as the sync call. See the batch endpoint.

#Request

FieldTypeNotes
urlstringProfile URL or public identifier. Provide url or urn.
urnstringLinkedIn member URN. Provide url or urn.
categorystringDefault all. Enum: all, influencers, companies, groups, newsletters, schools.
pageintegerDefault 1. Applies to each category.
per_pageintegerDefault 10. 1 to 25, per category.

#Call it

cURL
curl -X POST "https://api.up2data.ai/v1/profiles/interests" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "https://www.linkedin.com/in/janedoe",
  "category": "companies"
}'

#Response

200 - category: companies
{
  "data": {
    "url": "https://www.linkedin.com/in/janedoe", "public_identifier": "janedoe", "linkedin_id": "123456789", "urn": "ACoAABOPHB8BM6example", "category": "companies", "scraped_at": "2026-07-08T12:00:00Z",
    "companies": {
      "interests": [{ "name": "Example Corp", "url": "https://www.linkedin.com/company/example/", "urn": "1035", "headline": "B2B software for revenue teams", "followers_count": 141007, "caption": "141,007 followers", "logo_url": "https://media.licdn.com/dms/image/v2/C560BAQExample/company-logo_200_200/0/example" }],
      "pagination": { "page": 1, "per_page": 10, "has_more": true }
    }
  },
  "meta": { "creditsUsed": 1, "creditsRemaining": 98419, "billed": true, "reason": "success", "requestId": "req_example", "latencyMs": 2000 }
}
200 - category: all
{
  "data": {
    "url": "https://www.linkedin.com/in/janedoe", "public_identifier": "janedoe", "linkedin_id": "123456789", "urn": "ACoAABOPHB8BM6example", "category": "all", "scraped_at": "2026-07-08T12:00:00Z",
    "influencers": { "interests": [{ "name": "Alex Example", "url": "https://www.linkedin.com/in/example", "urn": "ACoAABOPHB8BM6alexex", "headline": "VP Sales at Example Corp", "followers_count": 52310, "caption": "52,310 followers" }], "pagination": { "page": 1, "per_page": 10, "has_more": false } },
    "companies": { "interests": [] },
    "groups": { "interests": [{ "name": "Revenue Operations", "url": "https://www.linkedin.com/groups/12345/", "urn": "12345", "members_count": 14182, "caption": "14,182 members" }], "pagination": { "page": 1, "per_page": 10, "has_more": false } },
    "newsletters": { "interests": [{ "name": "The Outbound Weekly", "url": "https://www.linkedin.com/newsletters/the-outbound-weekly-6900000000000000000/", "caption": "Published weekly" }], "pagination": { "page": 1, "per_page": 10, "has_more": false } },
    "schools": { "interests": [] }
  },
  "meta": { "creditsUsed": 3, "creditsRemaining": 98417, "billed": true, "reason": "success", "requestId": "req_example", "latencyMs": 2300 }
}

#Errors

StatusTypeWhenBilled
400invalid_requestMalformed body, unknown field, bad URL format, or a category outside the enum.No
401invalid_api_keyMissing, malformed, or revoked key.No
402insufficient_creditsBalance can't cover every requested category.No
422unprocessable_targetProfile not found, private, deleted, or unreachable. Billed as 1 credit.Yes
429rate_limitedOver the 300 requests/min per-key limit. 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.