social-profile skill fetches structured data about a social media profile through the SocialRouter CLI, which routes the request to the best provider for that platform and normalizes the response.
It triggers automatically when you ask for details about a social media account or profile — name, bio, follower count, company, location, etc. — on LinkedIn, Instagram, X (Twitter), TikTok, Reddit, YouTube, Facebook, Pinterest, Bluesky, or Snapchat.
Prerequisites
Thesocialrouter CLI must be installed and on PATH:
SOCIALROUTER_API_KEY must be set in the environment. Get a key at socialrouter.io.
npx @socialrouter/cli@latest in place of socialrouter for every command.
How the agent runs it
1. Identify the platform
From the URL or your wording, the agent picks one of:linkedin, instagram, x, tiktok, reddit, youtube, facebook, pinterest, bluesky, snapchat.
If only a username is given (no URL), it asks which platform — it never guesses.
2. Find a compatible provider slug from the live catalogue
The catalogue is dynamic, so the skill always fetches it before extracting:supported_platforms contains the target platform AND whose pricing has an entry with type: "profile.info" for that platform, then picks the cheapest active one. Slugs follow the form <provider_id>/<platform>/profile.info (e.g. apify/linkedin/profile.info).
3. Run the extraction
completed or failed) in a single call — no manual polling. To look up a previous result by ID, the agent uses socialrouter get <id> --json.
Optional flags the skill can append when your request calls for them:
| Flag | When the agent uses it |
|---|---|
--limit <n> | Caps the number of records. Mostly irrelevant for profile.info (usually one record) — the agent only adds it for multi-URL batches or when you ask to limit volume. |
--no-fallback | Disables the router’s automatic fallback. The agent adds it when you explicitly pin a provider and want the call to fail rather than silently land on another one. |
--options '<json>' | Per-actor input overrides as a JSON object, e.g. '{"proxyCountry":"US"}'. Each actor decides which keys it honors; the catalogue doesn’t advertise the schema, so the agent only passes keys you named or that are documented for that actor. |
4. Present the result
The agent shows the normalizeddata[0] fields you asked for — name, headline/bio, location, follower/connection count, company (if applicable), profile URL — without dumping the whole JSON unless you ask.
Error handling
The CLI prints errors to stderr and exits non-zero. Common cases:| Symptom | Meaning | What the agent does |
|---|---|---|
SOCIALROUTER_API_KEY environment variable is required | Key not set | Asks you to export it |
401 in the error message | Bad API key | Asks you to check SOCIALROUTER_API_KEY |
402 / “insufficient credits” | Out of credits | Points to socialrouter.io/dashboard to top up |
429 / “rate limit” | Rate limited | Waits the delay reported in the message and retries |
| Other 4xx / 5xx | Other | Surfaces the error verbatim |
Examples
You: “Get the LinkedIn profile for https://linkedin.com/in/satyanadella” → Platform:linkedin. Picks apify/linkedin/profile.info, runs socialrouter extract, returns name + title + company + location.
You: “Look up @nasa on Instagram”
→ Platform: instagram. URL = https://instagram.com/nasa. Picks a provider supporting instagram/profile.info, returns follower count + bio.
You: “Who is johndoe on TikTok and X?”
→ Two socialrouter extract calls, one per platform, run in parallel when possible.
Related
Skills overview
Install the bundle in any host (Claude Code, Cursor, Windsurf, …).
Providers
How provider slugs and the live catalogue work.