{"id":"e3b32647-6cf9-4e07-961b-8305c982114a","entityType":"agent","slug":"clawhub-crawlora-org-instagram-research","name":"instagram-research","canonicalUrl":"https://www.xpersona.co/agent/clawhub-crawlora-org-instagram-research","canonicalPath":"/agent/clawhub-crawlora-org-instagram-research","generatedAt":"2026-10-11T15:19:24.023Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T12:13:43.272Z","emptyReason":null},"description":"Researches Instagram profiles, posts, and Reels via the Crawlora API, returning clean JSON. Use when the user wants a public Instagram profile's stats, a specific post's media/engagement, or a user's Reels feed — instead of scraping the app.","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s17d53nb8nd03gyyfdy32rgde58e574f:instagram-research","sourceUrl":"https://clawhub.ai/crawlora-org/instagram-research","homepage":"https://clawhub.ai/crawlora-org/skills/instagram-research","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/crawlora-org/instagram-research","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/crawlora-org/skills/instagram-research","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":61,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"instagram-research technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T12:13:43.272Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T12:13:43.272Z","emptyReason":null},"stars":null,"forks":null,"downloads":1067,"packageName":null,"latestVersion":"1.0.18","tractionLabel":"1.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T12:13:43.200Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T12:13:43.272Z","lastCrawledAt":"2026-10-11T12:13:43.200Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T12:13:43.200Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.18","createdAt":"2026-10-06T01:53:24.688Z","changelog":"Sync skill instructions, references, and helper from GitHub a91c30113b1827d719267576bbd2936c99a28029","fileCount":5,"zipByteSize":5811},{"version":"1.0.17","createdAt":"2026-10-05T01:17:12.069Z","changelog":"Sync skill instructions, references, and helper from GitHub 83bb98ef1362f25cecb5ddd4bc1ea0e564555d97","fileCount":5,"zipByteSize":5754},{"version":"1.0.16","createdAt":"2026-09-17T10:22:00.635Z","changelog":"Security hardening: generated helpers now enforce exact routes, methods, and credential-safe curl behavior.","fileCount":5,"zipByteSize":5780},{"version":"1.0.15","createdAt":"2026-09-14T01:51:58.582Z","changelog":"Sync skill instructions, references, and helper from GitHub 902f58316c643ffbcabc57fc6f15f59d27ec063d","fileCount":5,"zipByteSize":6105},{"version":"1.0.14","createdAt":"2026-09-10T12:33:21.602Z","changelog":"Validate API keys before curl config","fileCount":5,"zipByteSize":6079},{"version":"1.0.13","createdAt":"2026-09-10T12:15:55.132Z","changelog":"Keep API keys out of process arguments","fileCount":5,"zipByteSize":5793},{"version":"1.0.12","createdAt":"2026-09-10T12:06:20.063Z","changelog":"Reject curl local-file query syntax","fileCount":5,"zipByteSize":5780},{"version":"1.0.11","createdAt":"2026-09-10T11:54:06.008Z","changelog":"Stream helper request bodies through curl stdin","fileCount":5,"zipByteSize":5512}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17d53nb8nd03gyyfdy32rgde58e574f:instagram-research","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17d53nb8nd03gyyfdy32rgde58e574f:instagram-research` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/crawlora-org/instagram-research before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-instagram-research/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-instagram-research/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-instagram-research/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-instagram-research/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-instagram-research/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-instagram-research/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T15:19:24.021Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-instagram-research/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-instagram-research/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-instagram-research/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-crawlora-org-instagram-research/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T12:13:43.272Z","emptyReason":null},"readme":"Skill: instagram-research\n\nOwner: crawlora-org\n\nSummary: Researches Instagram profiles, posts, and Reels via the Crawlora API, returning clean JSON. Use when the user wants a public Instagram profile's stats, a specific post's media/engagement, or a user's Reels feed — instead of scraping the app.\n\nTags: latest:1.0.18\n\nVersion history:\n\nv1.0.18 | 2026-10-06T01:53:24.688Z | user\n\nSync skill instructions, references, and helper from GitHub a91c30113b1827d719267576bbd2936c99a28029\n\nv1.0.17 | 2026-10-05T01:17:12.069Z | user\n\nSync skill instructions, references, and helper from GitHub 83bb98ef1362f25cecb5ddd4bc1ea0e564555d97\n\nv1.0.16 | 2026-09-17T10:22:00.635Z | user\n\nSecurity hardening: generated helpers now enforce exact routes, methods, and credential-safe curl behavior.\n\nv1.0.15 | 2026-09-14T01:51:58.582Z | user\n\nSync skill instructions, references, and helper from GitHub 902f58316c643ffbcabc57fc6f15f59d27ec063d\n\nv1.0.14 | 2026-09-10T12:33:21.602Z | user\n\nValidate API keys before curl config\n\nv1.0.13 | 2026-09-10T12:15:55.132Z | user\n\nKeep API keys out of process arguments\n\nv1.0.12 | 2026-09-10T12:06:20.063Z | user\n\nReject curl local-file query syntax\n\nv1.0.11 | 2026-09-10T11:54:06.008Z | user\n\nStream helper request bodies through curl stdin\n\nv1.0.10 | 2026-09-10T11:41:59.888Z | user\n\nScope helper routes and remove secret-shaped key examples\n\nv1.0.9 | 2026-09-10T06:49:00.680Z | user\n\nMigrate publisher from tonywangcn to crawlora-org for brand consistency with the plugins\n\nv1.0.8 | 2026-09-08T04:32:34.353Z | user\n\nRefresh stale REST examples, endpoint references, and Bash helper from crawlora-skills 1.17.1.\n\nv1.0.7 | 2026-09-07T13:06:54.981Z | user\n\nSync via scripts/sync-directories.sh\n\nv1.0.6 | 2026-09-07T07:57:49.940Z | user\n\nSync via scripts/sync-directories.sh\n\nv1.0.5 | 2026-09-07T06:21:49.539Z | user\n\nSync via scripts/sync-directories.sh\n\nv1.0.4 | 2026-08-24T06:52:38.323Z | user\n\nSync via scripts/sync-directories.sh\n\nv1.0.3 | 2026-08-24T06:11:05.700Z | user\n\nSync via scripts/sync-directories.sh\n\nv1.0.2 | 2026-08-24T04:53:16.321Z | user\n\nSync via scripts/sync-directories.sh\n\nv1.0.1 | 2026-08-14T18:13:57.729Z | user\n\nSync via scripts/sync-directories.sh\n\nv1.0.0 | 2026-08-10T19:00:42.347Z | user\n\nInitial publish\n\nArchive index:\n\nArchive v1.0.18: 5 files, 5811 bytes\n\nFiles: reference/endpoints.md (1871b), scripts/crawlora.sh (3393b), skill-card.md (1798b), SKILL.md (3801b), _meta.json (138b)\n\nFile v1.0.18:SKILL.md\n\n---\nname: instagram-research\ndescription: Researches Instagram profiles, posts, and Reels via the Crawlora API, returning clean JSON. Use when the user wants a public Instagram profile's stats, a specific post's media/engagement, or a user's Reels feed — instead of scraping the app.\n---\n\n# Instagram research\n\nLook up public Instagram profiles, posts, and Reels — all as normalized JSON\nfrom the Crawlora API, no app scraping or unofficial client libraries.\n\n## When to use this skill\n\n- \"What's <username>'s Instagram profile / follower count?\"\n- \"Pull the details for this Instagram post.\"\n- \"Get <username>'s recent Reels.\"\n- Competitor social audits, influencer vetting, or brand-mention monitoring\n  scoped to Instagram.\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- Set `CRAWLORA_API_KEY` in the environment before running the helper.\n- The helper reads `CRAWLORA_API_KEY` from the environment and sends requests to `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\n1. **Profile** — `/instagram/profile/{username}` returns public profile\n   details for a given Instagram username.\n2. **Reels** — `/instagram/reels/{id}` returns a feed of Reels for an\n   Instagram user ID, paginated via the optional `max_id` cursor.\n3. **Post detail** — `/instagram/post/{id}/{post_id}` returns the media\n   details of a specific post, keyed by Instagram user ID and post ID.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Profile:\nscripts/crawlora.sh /instagram/profile/nasa | jq '.'\n\n# Reels feed (paginate with max_id from the previous response):\nscripts/crawlora.sh /instagram/reels/528817151 | jq '.'\nscripts/crawlora.sh /instagram/reels/528817151 max_id=<cursor> | jq '.'\n\n# Post detail (requires both the user ID and the post ID):\nscripts/crawlora.sh /instagram/post/528817151/3123456789012345678 | jq '.'\n```\n\nUse `scripts/crawlora.sh` for all requests; it keeps the API key out of command-line arguments.\n\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Instagram\nendpoint this skill uses.\n\n## Examples\n\n- **Influencer vetting:** profile + Reels feed to check follower count,\n  posting cadence, and content mix before a partnership.\n- **Competitor social audit:** pull a competitor's profile stats and recent\n  Reels to gauge follower growth and content strategy over time.\n- **Post-level engagement check:** given a known post URL, extract the user\n  ID and post ID, then call `/instagram/post/{id}/{post_id}` for that post's\n  media details.\n\n## Notes & limits\n\n- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.\n  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- **Public data only** — public profiles/posts; no login, no private content.\n  Respect Instagram's terms.\n- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.\n- **Numeric user ID, not username, for Reels and post lookups** —\n  `/instagram/reels/{id}` and `/instagram/post/{id}/{post_id}` both key off\n  Instagram's internal numeric user ID, not the `@username`; get it from the\n  `/instagram/profile/{username}` response first if you only have a handle.\n- **Narrow public surface** — this skill covers profile lookup, Reels feed,\n  and single-post detail only; there is no keyword/hashtag search or\n  trending endpoint for Instagram.\n- **Reels pagination** is cursor-based via `max_id` — follow the cursor\n  returned in the response to walk beyond the first page.\n\nFile v1.0.18:_meta.json\n\n{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"instagram-research\",\n  \"version\": \"1.0.18\",\n  \"publishedAt\": 1791251604688\n}\n\nFile v1.0.18:reference/endpoints.md\n\n# instagram-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**3 endpoints across 1 platform group(s).**\n\n## Instagram (3)\n\n### `instagram_post`\n\n- **HTTP:** `GET /instagram/post/{id}/{post_id}`\n- **What:** Retrieve a specific Instagram post by URL shortcode. Returns media details for an Instagram URL shortcode. Use media.code from the reels response or shortcode from a public post URL; numeric media IDs are rejected.\n- **Params:** `id` (string, **required**) — Instagram user ID retained for route compatibility; ownership is not verified; `post_id` (string, **required**) — Instagram URL shortcode (media.code), not a numeric media ID\n\n### `instagram_profile`\n\n- **HTTP:** `GET /instagram/profile/{username}`\n- **What:** Retrieve an Instagram user profile by username. Returns public profile details for a specified Instagram username.\n- **Params:** `username` (string, **required**) — Instagram username\n\n### `instagram_reels`\n\n- **HTTP:** `GET /instagram/reels/{id}`\n- **What:** Retrieve Instagram Reels for a user. Returns up to 12 public Reels via anonymous proxied HTTP for the numeric Instagram user ID. Supports opaque `max_id` pagination. Captions, timestamps and original image dimensions are omitted when the public source does not expose them.\n- **Params:** `id` (string, **required**) — Numeric Instagram user ID (not a username); `max_id` (string, optional) — Pagination cursor for fetching the next page of Reels\n\nFile v1.0.18:skill-card.md\n\n## Description:\n\nLooks up public Instagram profiles, posts, and Reels through the Crawlora API and returns structured JSON.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, analysts, and marketers use this skill to research public Instagram profiles, individual posts, and Reels for social audits or influencer vetting.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Public lookup identifiers and request data are sent to the third-party Crawlora service.\n\nMitigation: Use only for public lookups and avoid sensitive or private identifiers in routes and queries.\n\nRisk: The Crawlora API key is a credential needed for requests.\n\nMitigation: Keep CRAWLORA_API_KEY private; do not hardcode, expose, or commit it.\n\nRisk: Use of Instagram public data may be subject to service terms.\n\nMitigation: Review Crawlora's and Instagram's terms before use.\n\n## Reference(s):\n\n- [Instagram endpoint reference](artifact/reference/endpoints.md)\n- [Instagram Research release](https://clawhub.ai/crawlora-org/skills/instagram-research)\n\n## Skill Output:\n\n**Output Type(s):** [JSON, Text, Shell commands]\n\n**Output Format:** [JSON or text with shell examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Public profile, post, and Reels data; Reels pagination uses a cursor.]\n\n## Skill Version(s):\n\n1.0.18 (source: server-resolved release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.17: 5 files, 5754 bytes\n\nFiles: reference/endpoints.md (1729b), scripts/crawlora.sh (3393b), skill-card.md (1831b), SKILL.md (3801b), _meta.json (138b)\n\nFile v1.0.17:SKILL.md\n\n---\nname: instagram-research\ndescription: Researches Instagram profiles, posts, and Reels via the Crawlora API, returning clean JSON. Use when the user wants a public Instagram profile's stats, a specific post's media/engagement, or a user's Reels feed — instead of scraping the app.\n---\n\n# Instagram research\n\nLook up public Instagram profiles, posts, and Reels — all as normalized JSON\nfrom the Crawlora API, no app scraping or unofficial client libraries.\n\n## When to use this skill\n\n- \"What's <username>'s Instagram profile / follower count?\"\n- \"Pull the details for this Instagram post.\"\n- \"Get <username>'s recent Reels.\"\n- Competitor social audits, influencer vetting, or brand-mention monitoring\n  scoped to Instagram.\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- Set `CRAWLORA_API_KEY` in the environment before running the helper.\n- The helper reads `CRAWLORA_API_KEY` from the environment and sends requests to `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\n1. **Profile** — `/instagram/profile/{username}` returns public profile\n   details for a given Instagram username.\n2. **Reels** — `/instagram/reels/{id}` returns a feed of Reels for an\n   Instagram user ID, paginated via the optional `max_id` cursor.\n3. **Post detail** — `/instagram/post/{id}/{post_id}` returns the media\n   details of a specific post, keyed by Instagram user ID and post ID.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Profile:\nscripts/crawlora.sh /instagram/profile/nasa | jq '.'\n\n# Reels feed (paginate with max_id from the previous response):\nscripts/crawlora.sh /instagram/reels/528817151 | jq '.'\nscripts/crawlora.sh /instagram/reels/528817151 max_id=<cursor> | jq '.'\n\n# Post detail (requires both the user ID and the post ID):\nscripts/crawlora.sh /instagram/post/528817151/3123456789012345678 | jq '.'\n```\n\nUse `scripts/crawlora.sh` for all requests; it keeps the API key out of command-line arguments.\n\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Instagram\nendpoint this skill uses.\n\n## Examples\n\n- **Influencer vetting:** profile + Reels feed to check follower count,\n  posting cadence, and content mix before a partnership.\n- **Competitor social audit:** pull a competitor's profile stats and recent\n  Reels to gauge follower growth and content strategy over time.\n- **Post-level engagement check:** given a known post URL, extract the user\n  ID and post ID, then call `/instagram/post/{id}/{post_id}` for that post's\n  media details.\n\n## Notes & limits\n\n- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.\n  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- **Public data only** — public profiles/posts; no login, no private content.\n  Respect Instagram's terms.\n- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.\n- **Numeric user ID, not username, for Reels and post lookups** —\n  `/instagram/reels/{id}` and `/instagram/post/{id}/{post_id}` both key off\n  Instagram's internal numeric user ID, not the `@username`; get it from the\n  `/instagram/profile/{username}` response first if you only have a handle.\n- **Narrow public surface** — this skill covers profile lookup, Reels feed,\n  and single-post detail only; there is no keyword/hashtag search or\n  trending endpoint for Instagram.\n- **Reels pagination** is cursor-based via `max_id` — follow the cursor\n  returned in the response to walk beyond the first page.\n\nFile v1.0.17:_meta.json\n\n{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"instagram-research\",\n  \"version\": \"1.0.17\",\n  \"publishedAt\": 1791163032069\n}\n\nFile v1.0.17:reference/endpoints.md\n\n# instagram-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**3 endpoints across 1 platform group(s).**\n\n## Instagram (3)\n\n### `instagram_post`\n\n- **HTTP:** `GET /instagram/post/{id}/{post_id}`\n- **What:** Retrieve a specific Instagram post by URL shortcode. Returns media details for an Instagram URL shortcode. Use media.code from the reels response or shortcode from a public post URL; numeric media IDs are rejected.\n- **Params:** `id` (string, **required**) — Instagram user ID retained for route compatibility; ownership is not verified; `post_id` (string, **required**) — Instagram URL shortcode (media.code), not a numeric media ID\n\n### `instagram_profile`\n\n- **HTTP:** `GET /instagram/profile/{username}`\n- **What:** Retrieve an Instagram user profile by username. Returns public profile details for a specified Instagram username.\n- **Params:** `username` (string, **required**) — Instagram username\n\n### `instagram_reels`\n\n- **HTTP:** `GET /instagram/reels/{id}`\n- **What:** Retrieve Instagram Reels for a user. Returns a feed of Instagram Reels for the specified user ID. Supports pagination via `max_id`.\n- **Params:** `id` (string, **required**) — Numeric Instagram user ID (not a username); `max_id` (string, optional) — Pagination cursor for fetching the next page of Reels\n\nFile v1.0.17:skill-card.md\n\n## Description:\n\nResearches public Instagram profiles, posts, and Reels through the Crawlora API and returns structured results.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and analysts can inspect public Instagram profiles, review Reels feeds, and check individual posts for influencer vetting or social-media audits.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The Crawlora API key and requested Instagram identifiers are sent to a third-party service.\n\nMitigation: Use an environment variable for the key and make requests only when disclosure to Crawlora is acceptable.\n\nRisk: Sensitive investigative targets or private content may create inappropriate disclosure or access expectations.\n\nMitigation: Limit use to public content and avoid submitting sensitive targets or login and session data.\n\n## Reference(s):\n\n- [Instagram endpoint reference](reference/endpoints.md)\n- [Crawlora](https://crawlora.net)\n- [Instagram Research on ClawHub](https://clawhub.ai/crawlora-org/skills/instagram-research)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Guidance, Shell commands]\n\n**Output Format:** [JSON results with optional natural-language summaries]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Public profile, post, and Reels data; Reels results support cursor-based pagination.]\n\n## Skill Version(s):\n\n1.0.17 (source: server-resolved ClawHub release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.16: 5 files, 5780 bytes\n\nFiles: reference/endpoints.md (1539b), scripts/crawlora.sh (3393b), skill-card.md (2161b), SKILL.md (3801b), _meta.json (138b)\n\nFile v1.0.16:SKILL.md\n\n---\nname: instagram-research\ndescription: Researches Instagram profiles, posts, and Reels via the Crawlora API, returning clean JSON. Use when the user wants a public Instagram profile's stats, a specific post's media/engagement, or a user's Reels feed — instead of scraping the app.\n---\n\n# Instagram research\n\nLook up public Instagram profiles, posts, and Reels — all as normalized JSON\nfrom the Crawlora API, no app scraping or unofficial client libraries.\n\n## When to use this skill\n\n- \"What's <username>'s Instagram profile / follower count?\"\n- \"Pull the details for this Instagram post.\"\n- \"Get <username>'s recent Reels.\"\n- Competitor social audits, influencer vetting, or brand-mention monitoring\n  scoped to Instagram.\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- Set `CRAWLORA_API_KEY` in the environment before running the helper.\n- The helper reads `CRAWLORA_API_KEY` from the environment and sends requests to `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\n1. **Profile** — `/instagram/profile/{username}` returns public profile\n   details for a given Instagram username.\n2. **Reels** — `/instagram/reels/{id}` returns a feed of Reels for an\n   Instagram user ID, paginated via the optional `max_id` cursor.\n3. **Post detail** — `/instagram/post/{id}/{post_id}` returns the media\n   details of a specific post, keyed by Instagram user ID and post ID.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Profile:\nscripts/crawlora.sh /instagram/profile/nasa | jq '.'\n\n# Reels feed (paginate with max_id from the previous response):\nscripts/crawlora.sh /instagram/reels/528817151 | jq '.'\nscripts/crawlora.sh /instagram/reels/528817151 max_id=<cursor> | jq '.'\n\n# Post detail (requires both the user ID and the post ID):\nscripts/crawlora.sh /instagram/post/528817151/3123456789012345678 | jq '.'\n```\n\nUse `scripts/crawlora.sh` for all requests; it keeps the API key out of command-line arguments.\n\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Instagram\nendpoint this skill uses.\n\n## Examples\n\n- **Influencer vetting:** profile + Reels feed to check follower count,\n  posting cadence, and content mix before a partnership.\n- **Competitor social audit:** pull a competitor's profile stats and recent\n  Reels to gauge follower growth and content strategy over time.\n- **Post-level engagement check:** given a known post URL, extract the user\n  ID and post ID, then call `/instagram/post/{id}/{post_id}` for that post's\n  media details.\n\n## Notes & limits\n\n- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.\n  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- **Public data only** — public profiles/posts; no login, no private content.\n  Respect Instagram's terms.\n- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.\n- **Numeric user ID, not username, for Reels and post lookups** —\n  `/instagram/reels/{id}` and `/instagram/post/{id}/{post_id}` both key off\n  Instagram's internal numeric user ID, not the `@username`; get it from the\n  `/instagram/profile/{username}` response first if you only have a handle.\n- **Narrow public surface** — this skill covers profile lookup, Reels feed,\n  and single-post detail only; there is no keyword/hashtag search or\n  trending endpoint for Instagram.\n- **Reels pagination** is cursor-based via `max_id` — follow the cursor\n  returned in the response to walk beyond the first page.\n\nFile v1.0.16:_meta.json\n\n{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"instagram-research\",\n  \"version\": \"1.0.16\",\n  \"publishedAt\": 1789640520635\n}\n\nFile v1.0.16:reference/endpoints.md\n\n# instagram-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**3 endpoints across 1 platform group(s).**\n\n## Instagram (3)\n\n### `instagram_post`\n\n- **HTTP:** `GET /instagram/post/{id}/{post_id}`\n- **What:** Retrieve a specific Instagram post by user ID and post ID. Returns the media details of a specific post from an Instagram user.\n- **Params:** `id` (string, **required**) — Instagram user ID; `post_id` (string, **required**) — Instagram post ID\n\n### `instagram_profile`\n\n- **HTTP:** `GET /instagram/profile/{username}`\n- **What:** Retrieve an Instagram user profile by username. Returns public profile details for a specified Instagram username.\n- **Params:** `username` (string, **required**) — Instagram username\n\n### `instagram_reels`\n\n- **HTTP:** `GET /instagram/reels/{id}`\n- **What:** Retrieve Instagram Reels for a user. Returns a feed of Instagram Reels for the specified user ID. Supports pagination via `max_id`.\n- **Params:** `id` (string, **required**) — Numeric Instagram user ID (not a username); `max_id` (string, optional) — Pagination cursor for fetching the next page of Reels\n\nFile v1.0.16:skill-card.md\n\n## Description:\n\nResearches Instagram profiles, posts, and Reels via the Crawlora API, returning clean JSON for public Instagram profile, post, and Reels lookups.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users, developers, and analysts use this skill to retrieve normalized public Instagram profile, post, and Reels data for influencer vetting, competitor social audits, brand monitoring, and post-level engagement checks.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill sends Instagram lookup requests to Crawlora as a third-party service.\n\nMitigation: Install and use it only when third-party processing by Crawlora is acceptable for the intended workflow.\n\nRisk: The helper requires a Crawlora API key.\n\nMitigation: Store CRAWLORA_API_KEY in the environment, avoid hardcoding or committing it, and keep it out of query parameters.\n\nRisk: Instagram lookups are limited to public data and must respect applicable platform terms.\n\nMitigation: Use the skill only for public profiles, posts, and Reels, and verify that the intended use complies with relevant terms and policies.\n\n## Reference(s):\n\n- [Endpoint reference](reference/endpoints.md)\n- [Crawlora](https://crawlora.net)\n- [Crawlora API base](https://api.crawlora.net/api/v1)\n- [ClawHub skill page](https://clawhub.ai/crawlora-org/skills/instagram-research)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Shell commands, JSON, Guidance]\n\n**Output Format:** [Markdown guidance with shell commands and JSON API responses]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Uses CRAWLORA_API_KEY from the environment and returns public Instagram data through Crawlora.]\n\n## Skill Version(s):\n\n1.0.16 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.15: 5 files, 6105 bytes\n\nFiles: reference/endpoints.md (1539b), scripts/crawlora.sh (4310b), skill-card.md (1855b), SKILL.md (3801b), _meta.json (138b)\n\nFile v1.0.15:SKILL.md\n\n---\nname: instagram-research\ndescription: Researches Instagram profiles, posts, and Reels via the Crawlora API, returning clean JSON. Use when the user wants a public Instagram profile's stats, a specific post's media/engagement, or a user's Reels feed — instead of scraping the app.\n---\n\n# Instagram research\n\nLook up public Instagram profiles, posts, and Reels — all as normalized JSON\nfrom the Crawlora API, no app scraping or unofficial client libraries.\n\n## When to use this skill\n\n- \"What's <username>'s Instagram profile / follower count?\"\n- \"Pull the details for this Instagram post.\"\n- \"Get <username>'s recent Reels.\"\n- Competitor social audits, influencer vetting, or brand-mention monitoring\n  scoped to Instagram.\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- Set `CRAWLORA_API_KEY` in the environment before running the helper.\n- The helper reads `CRAWLORA_API_KEY` from the environment and sends requests to `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\n1. **Profile** — `/instagram/profile/{username}` returns public profile\n   details for a given Instagram username.\n2. **Reels** — `/instagram/reels/{id}` returns a feed of Reels for an\n   Instagram user ID, paginated via the optional `max_id` cursor.\n3. **Post detail** — `/instagram/post/{id}/{post_id}` returns the media\n   details of a specific post, keyed by Instagram user ID and post ID.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Profile:\nscripts/crawlora.sh /instagram/profile/nasa | jq '.'\n\n# Reels feed (paginate with max_id from the previous response):\nscripts/crawlora.sh /instagram/reels/528817151 | jq '.'\nscripts/crawlora.sh /instagram/reels/528817151 max_id=<cursor> | jq '.'\n\n# Post detail (requires both the user ID and the post ID):\nscripts/crawlora.sh /instagram/post/528817151/3123456789012345678 | jq '.'\n```\n\nUse `scripts/crawlora.sh` for all requests; it keeps the API key out of command-line arguments.\n\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Instagram\nendpoint this skill uses.\n\n## Examples\n\n- **Influencer vetting:** profile + Reels feed to check follower count,\n  posting cadence, and content mix before a partnership.\n- **Competitor social audit:** pull a competitor's profile stats and recent\n  Reels to gauge follower growth and content strategy over time.\n- **Post-level engagement check:** given a known post URL, extract the user\n  ID and post ID, then call `/instagram/post/{id}/{post_id}` for that post's\n  media details.\n\n## Notes & limits\n\n- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.\n  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- **Public data only** — public profiles/posts; no login, no private content.\n  Respect Instagram's terms.\n- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.\n- **Numeric user ID, not username, for Reels and post lookups** —\n  `/instagram/reels/{id}` and `/instagram/post/{id}/{post_id}` both key off\n  Instagram's internal numeric user ID, not the `@username`; get it from the\n  `/instagram/profile/{username}` response first if you only have a handle.\n- **Narrow public surface** — this skill covers profile lookup, Reels feed,\n  and single-post detail only; there is no keyword/hashtag search or\n  trending endpoint for Instagram.\n- **Reels pagination** is cursor-based via `max_id` — follow the cursor\n  returned in the response to walk beyond the first page.\n\nFile v1.0.15:_meta.json\n\n{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"instagram-research\",\n  \"version\": \"1.0.15\",\n  \"publishedAt\": 1789350718582\n}\n\nFile v1.0.15:reference/endpoints.md\n\n# instagram-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**3 endpoints across 1 platform group(s).**\n\n## Instagram (3)\n\n### `instagram_post`\n\n- **HTTP:** `GET /instagram/post/{id}/{post_id}`\n- **What:** Retrieve a specific Instagram post by user ID and post ID. Returns the media details of a specific post from an Instagram user.\n- **Params:** `id` (string, **required**) — Instagram user ID; `post_id` (string, **required**) — Instagram post ID\n\n### `instagram_profile`\n\n- **HTTP:** `GET /instagram/profile/{username}`\n- **What:** Retrieve an Instagram user profile by username. Returns public profile details for a specified Instagram username.\n- **Params:** `username` (string, **required**) — Instagram username\n\n### `instagram_reels`\n\n- **HTTP:** `GET /instagram/reels/{id}`\n- **What:** Retrieve Instagram Reels for a user. Returns a feed of Instagram Reels for the specified user ID. Supports pagination via `max_id`.\n- **Params:** `id` (string, **required**) — Numeric Instagram user ID (not a username); `max_id` (string, optional) — Pagination cursor for fetching the next page of Reels\n\nFile v1.0.15:skill-card.md\n\n## Description:\n\nResearches Instagram profiles, posts, and Reels via the Crawlora API, returning clean JSON.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users, developers, and analysts use this skill to retrieve public Instagram profile stats, post media and engagement details, and Reels feeds through Crawlora instead of scraping Instagram directly.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill sends the configured Crawlora API key and requested public Instagram identifiers to Crawlora.\n\nMitigation: Install only if comfortable granting that access; keep CRAWLORA_API_KEY in the environment and do not hardcode or commit it.\n\nRisk: The helper still accepts POST even though the documented Instagram endpoints are GET-only.\n\nMitigation: Prefer documented GET calls and update the helper to reject POST for these Instagram endpoints.\n\n## Reference(s):\n\n- [Instagram Endpoint Reference](reference/endpoints.md)\n- [Crawlora](https://crawlora.net)\n- [Crawlora API Base](https://api.crawlora.net/api/v1)\n\n## Skill Output:\n\n**Output Type(s):** [JSON, Shell commands, Guidance]\n\n**Output Format:** [JSON responses with Markdown usage guidance and inline shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires CRAWLORA_API_KEY and uses documented public Instagram profile, post, and Reels endpoints.]\n\n## Skill Version(s):\n\n1.0.15 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.14: 5 files, 6079 bytes\n\nFiles: reference/endpoints.md (1539b), scripts/crawlora.sh (3802b), skill-card.md (2331b), SKILL.md (3801b), _meta.json (138b)\n\nFile v1.0.14:SKILL.md\n\n---\nname: instagram-research\ndescription: Researches Instagram profiles, posts, and Reels via the Crawlora API, returning clean JSON. Use when the user wants a public Instagram profile's stats, a specific post's media/engagement, or a user's Reels feed — instead of scraping the app.\n---\n\n# Instagram research\n\nLook up public Instagram profiles, posts, and Reels — all as normalized JSON\nfrom the Crawlora API, no app scraping or unofficial client libraries.\n\n## When to use this skill\n\n- \"What's <username>'s Instagram profile / follower count?\"\n- \"Pull the details for this Instagram post.\"\n- \"Get <username>'s recent Reels.\"\n- Competitor social audits, influencer vetting, or brand-mention monitoring\n  scoped to Instagram.\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- Set `CRAWLORA_API_KEY` in the environment before running the helper.\n- The helper reads `CRAWLORA_API_KEY` from the environment and sends requests to `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\n1. **Profile** — `/instagram/profile/{username}` returns public profile\n   details for a given Instagram username.\n2. **Reels** — `/instagram/reels/{id}` returns a feed of Reels for an\n   Instagram user ID, paginated via the optional `max_id` cursor.\n3. **Post detail** — `/instagram/post/{id}/{post_id}` returns the media\n   details of a specific post, keyed by Instagram user ID and post ID.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Profile:\nscripts/crawlora.sh /instagram/profile/nasa | jq '.'\n\n# Reels feed (paginate with max_id from the previous response):\nscripts/crawlora.sh /instagram/reels/528817151 | jq '.'\nscripts/crawlora.sh /instagram/reels/528817151 max_id=<cursor> | jq '.'\n\n# Post detail (requires both the user ID and the post ID):\nscripts/crawlora.sh /instagram/post/528817151/3123456789012345678 | jq '.'\n```\n\nUse `scripts/crawlora.sh` for all requests; it keeps the API key out of command-line arguments.\n\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Instagram\nendpoint this skill uses.\n\n## Examples\n\n- **Influencer vetting:** profile + Reels feed to check follower count,\n  posting cadence, and content mix before a partnership.\n- **Competitor social audit:** pull a competitor's profile stats and recent\n  Reels to gauge follower growth and content strategy over time.\n- **Post-level engagement check:** given a known post URL, extract the user\n  ID and post ID, then call `/instagram/post/{id}/{post_id}` for that post's\n  media details.\n\n## Notes & limits\n\n- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.\n  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- **Public data only** — public profiles/posts; no login, no private content.\n  Respect Instagram's terms.\n- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.\n- **Numeric user ID, not username, for Reels and post lookups** —\n  `/instagram/reels/{id}` and `/instagram/post/{id}/{post_id}` both key off\n  Instagram's internal numeric user ID, not the `@username`; get it from the\n  `/instagram/profile/{username}` response first if you only have a handle.\n- **Narrow public surface** — this skill covers profile lookup, Reels feed,\n  and single-post detail only; there is no keyword/hashtag search or\n  trending endpoint for Instagram.\n- **Reels pagination** is cursor-based via `max_id` — follow the cursor\n  returned in the response to walk beyond the first page.\n\nFile v1.0.14:_meta.json\n\n{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"instagram-research\",\n  \"version\": \"1.0.14\",\n  \"publishedAt\": 1789043601602\n}\n\nFile v1.0.14:reference/endpoints.md\n\n# instagram-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**3 endpoints across 1 platform group(s).**\n\n## Instagram (3)\n\n### `instagram_post`\n\n- **HTTP:** `GET /instagram/post/{id}/{post_id}`\n- **What:** Retrieve a specific Instagram post by user ID and post ID. Returns the media details of a specific post from an Instagram user.\n- **Params:** `id` (string, **required**) — Instagram user ID; `post_id` (string, **required**) — Instagram post ID\n\n### `instagram_profile`\n\n- **HTTP:** `GET /instagram/profile/{username}`\n- **What:** Retrieve an Instagram user profile by username. Returns public profile details for a specified Instagram username.\n- **Params:** `username` (string, **required**) — Instagram username\n\n### `instagram_reels`\n\n- **HTTP:** `GET /instagram/reels/{id}`\n- **What:** Retrieve Instagram Reels for a user. Returns a feed of Instagram Reels for the specified user ID. Supports pagination via `max_id`.\n- **Params:** `id` (string, **required**) — Numeric Instagram user ID (not a username); `max_id` (string, optional) — Pagination cursor for fetching the next page of Reels\n\nFile v1.0.14:skill-card.md\n\n## Description:\n\nResearches Instagram profiles, posts, and Reels via the Crawlora API, returning clean JSON.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal researchers, marketers, and developers use this skill to retrieve normalized JSON for public Instagram profiles, Reels feeds, and specific posts through Crawlora. Common tasks include competitor social audits, influencer vetting, brand monitoring scoped to Instagram, and post-level engagement checks.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Authenticated Crawlora requests may be sent outside the documented read-only Instagram surface.\n\nMitigation: Review the helper before installation with a real API key and tighten it to GET-only exact endpoint shapes for the documented Instagram profile, Reels, and post lookups.\n\nRisk: A real Crawlora API key is required for normal use.\n\nMitigation: Store the key only in CRAWLORA_API_KEY, avoid committing it, and review generated shell commands before execution.\n\nRisk: The skill is intended for public Instagram data and may still raise terms-of-use or privacy considerations.\n\nMitigation: Use it only for public profiles, posts, and Reels, and confirm the planned use respects Instagram's terms and applicable policies.\n\n## Reference(s):\n\n- [Instagram endpoint reference](reference/endpoints.md)\n- [Crawlora](https://crawlora.net)\n- [Crawlora API base](https://api.crawlora.net/api/v1)\n- [ClawHub skill page](https://clawhub.ai/crawlora-org/skills/instagram-research)\n\n## Skill Output:\n\n**Output Type(s):** [JSON, Shell commands, Configuration, Guidance]\n\n**Output Format:** [JSON responses and Markdown guidance with inline shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires CRAWLORA_API_KEY and public Instagram identifiers; Reels and post lookups use numeric user IDs.]\n\n## Skill Version(s):\n\n1.0.14 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.13: 5 files, 5793 bytes\n\nFiles: reference/endpoints.md (1539b), scripts/crawlora.sh (3545b), skill-card.md (1886b), SKILL.md (3801b), _meta.json (138b)\n\nFile v1.0.13:SKILL.md\n\n---\nname: instagram-research\ndescription: Researches Instagram profiles, posts, and Reels via the Crawlora API, returning clean JSON. Use when the user wants a public Instagram profile's stats, a specific post's media/engagement, or a user's Reels feed — instead of scraping the app.\n---\n\n# Instagram research\n\nLook up public Instagram profiles, posts, and Reels — all as normalized JSON\nfrom the Crawlora API, no app scraping or unofficial client libraries.\n\n## When to use this skill\n\n- \"What's <username>'s Instagram profile / follower count?\"\n- \"Pull the details for this Instagram post.\"\n- \"Get <username>'s recent Reels.\"\n- Competitor social audits, influencer vetting, or brand-mention monitoring\n  scoped to Instagram.\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- Set `CRAWLORA_API_KEY` in the environment before running the helper.\n- The helper reads `CRAWLORA_API_KEY` from the environment and sends requests to `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\n1. **Profile** — `/instagram/profile/{username}` returns public profile\n   details for a given Instagram username.\n2. **Reels** — `/instagram/reels/{id}` returns a feed of Reels for an\n   Instagram user ID, paginated via the optional `max_id` cursor.\n3. **Post detail** — `/instagram/post/{id}/{post_id}` returns the media\n   details of a specific post, keyed by Instagram user ID and post ID.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Profile:\nscripts/crawlora.sh /instagram/profile/nasa | jq '.'\n\n# Reels feed (paginate with max_id from the previous response):\nscripts/crawlora.sh /instagram/reels/528817151 | jq '.'\nscripts/crawlora.sh /instagram/reels/528817151 max_id=<cursor> | jq '.'\n\n# Post detail (requires both the user ID and the post ID):\nscripts/crawlora.sh /instagram/post/528817151/3123456789012345678 | jq '.'\n```\n\nUse `scripts/crawlora.sh` for all requests; it keeps the API key out of command-line arguments.\n\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Instagram\nendpoint this skill uses.\n\n## Examples\n\n- **Influencer vetting:** profile + Reels feed to check follower count,\n  posting cadence, and content mix before a partnership.\n- **Competitor social audit:** pull a competitor's profile stats and recent\n  Reels to gauge follower growth and content strategy over time.\n- **Post-level engagement check:** given a known post URL, extract the user\n  ID and post ID, then call `/instagram/post/{id}/{post_id}` for that post's\n  media details.\n\n## Notes & limits\n\n- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.\n  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- **Public data only** — public profiles/posts; no login, no private content.\n  Respect Instagram's terms.\n- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.\n- **Numeric user ID, not username, for Reels and post lookups** —\n  `/instagram/reels/{id}` and `/instagram/post/{id}/{post_id}` both key off\n  Instagram's internal numeric user ID, not the `@username`; get it from the\n  `/instagram/profile/{username}` response first if you only have a handle.\n- **Narrow public surface** — this skill covers profile lookup, Reels feed,\n  and single-post detail only; there is no keyword/hashtag search or\n  trending endpoint for Instagram.\n- **Reels pagination** is cursor-based via `max_id` — follow the cursor\n  returned in the response to walk beyond the first page.\n\nFile v1.0.13:_meta.json\n\n{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"instagram-research\",\n  \"version\": \"1.0.13\",\n  \"publishedAt\": 1789042555132\n}\n\nFile v1.0.13:reference/endpoints.md\n\n# instagram-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**3 endpoints across 1 platform group(s).**\n\n## Instagram (3)\n\n### `instagram_post`\n\n- **HTTP:** `GET /instagram/post/{id}/{post_id}`\n- **What:** Retrieve a specific Instagram post by user ID and post ID. Returns the media details of a specific post from an Instagram user.\n- **Params:** `id` (string, **required**) — Instagram user ID; `post_id` (string, **required**) — Instagram post ID\n\n### `instagram_profile`\n\n- **HTTP:** `GET /instagram/profile/{username}`\n- **What:** Retrieve an Instagram user profile by username. Returns public profile details for a specified Instagram username.\n- **Params:** `username` (string, **required**) — Instagram username\n\n### `instagram_reels`\n\n- **HTTP:** `GET /instagram/reels/{id}`\n- **What:** Retrieve Instagram Reels for a user. Returns a feed of Instagram Reels for the specified user ID. Supports pagination via `max_id`.\n- **Params:** `id` (string, **required**) — Numeric Instagram user ID (not a username); `max_id` (string, optional) — Pagination cursor for fetching the next page of Reels\n\nFile v1.0.13:skill-card.md\n\n## Description:\n\nResearches Instagram profiles, posts, and Reels via the Crawlora API, returning clean JSON.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, analysts, and social media teams use this skill to retrieve normalized public Instagram profile, post, and Reels data for influencer vetting, competitor audits, and post-level engagement checks without scraping the Instagram app.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill uses a Crawlora API key, and release security evidence flags an API-key handling issue that warrants review before installation.\n\nMitigation: Review the skill before installation, use only a Crawlora API key obtained directly from a trusted source, avoid shared wrappers or environment files that set CRAWLORA_API_KEY, and prefer a version that validates or safely escapes the key and disables curl globbing.\n\n## Reference(s):\n\n- [Instagram endpoint reference](reference/endpoints.md)\n- [Crawlora](https://crawlora.net)\n- [ClawHub skill page](https://clawhub.ai/crawlora-org/skills/instagram-research)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown with inline shell commands and JSON API responses]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Uses CRAWLORA_API_KEY and returns public Instagram data from Crawlora API endpoints.]\n\n## Skill Version(s):\n\n1.0.13 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.12: 5 files, 5780 bytes\n\nFiles: reference/endpoints.md (1539b), scripts/crawlora.sh (3220b), skill-card.md (2281b), SKILL.md (3826b), _meta.json (138b)\n\nFile v1.0.12:SKILL.md\n\n---\nname: instagram-research\ndescription: Researches Instagram profiles, posts, and Reels via the Crawlora API, returning clean JSON. Use when the user wants a public Instagram profile's stats, a specific post's media/engagement, or a user's Reels feed — instead of scraping the app.\n---\n\n# Instagram research\n\nLook up public Instagram profiles, posts, and Reels — all as normalized JSON\nfrom the Crawlora API, no app scraping or unofficial client libraries.\n\n## When to use this skill\n\n- \"What's <username>'s Instagram profile / follower count?\"\n- \"Pull the details for this Instagram post.\"\n- \"Get <username>'s recent Reels.\"\n- Competitor social audits, influencer vetting, or brand-mention monitoring\n  scoped to Instagram.\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- Set `CRAWLORA_API_KEY` in the environment before running the helper.\n- All requests: `x-api-key: $CRAWLORA_API_KEY` against\n  `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\n1. **Profile** — `/instagram/profile/{username}` returns public profile\n   details for a given Instagram username.\n2. **Reels** — `/instagram/reels/{id}` returns a feed of Reels for an\n   Instagram user ID, paginated via the optional `max_id` cursor.\n3. **Post detail** — `/instagram/post/{id}/{post_id}` returns the media\n   details of a specific post, keyed by Instagram user ID and post ID.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Profile:\nscripts/crawlora.sh /instagram/profile/nasa | jq '.'\n\n# Reels feed (paginate with max_id from the previous response):\nscripts/crawlora.sh /instagram/reels/528817151 | jq '.'\nscripts/crawlora.sh /instagram/reels/528817151 max_id=<cursor> | jq '.'\n\n# Post detail (requires both the user ID and the post ID):\nscripts/crawlora.sh /instagram/post/528817151/3123456789012345678 | jq '.'\n```\n\nRaw `curl` fallback:\n\n```sh\ncurl -fsS -H \"x-api-key: $CRAWLORA_API_KEY\" \\\n  \"https://api.crawlora.net/api/v1/instagram/profile/nasa\" | jq '.'\n```\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Instagram\nendpoint this skill uses.\n\n## Examples\n\n- **Influencer vetting:** profile + Reels feed to check follower count,\n  posting cadence, and content mix before a partnership.\n- **Competitor social audit:** pull a competitor's profile stats and recent\n  Reels to gauge follower growth and content strategy over time.\n- **Post-level engagement check:** given a known post URL, extract the user\n  ID and post ID, then call `/instagram/post/{id}/{post_id}` for that post's\n  media details.\n\n## Notes & limits\n\n- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.\n  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- **Public data only** — public profiles/posts; no login, no private content.\n  Respect Instagram's terms.\n- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.\n- **Numeric user ID, not username, for Reels and post lookups** —\n  `/instagram/reels/{id}` and `/instagram/post/{id}/{post_id}` both key off\n  Instagram's internal numeric user ID, not the `@username`; get it from the\n  `/instagram/profile/{username}` response first if you only have a handle.\n- **Narrow public surface** — this skill covers profile lookup, Reels feed,\n  and single-post detail only; there is no keyword/hashtag search or\n  trending endpoint for Instagram.\n- **Reels pagination** is cursor-based via `max_id` — follow the cursor\n  returned in the response to walk beyond the first page.\n\nFile v1.0.12:_meta.json\n\n{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"instagram-research\",\n  \"version\": \"1.0.12\",\n  \"publishedAt\": 1789041980063\n}\n\nFile v1.0.12:reference/endpoints.md\n\n# instagram-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**3 endpoints across 1 platform group(s).**\n\n## Instagram (3)\n\n### `instagram_post`\n\n- **HTTP:** `GET /instagram/post/{id}/{post_id}`\n- **What:** Retrieve a specific Instagram post by user ID and post ID. Returns the media details of a specific post from an Instagram user.\n- **Params:** `id` (string, **required**) — Instagram user ID; `post_id` (string, **required**) — Instagram post ID\n\n### `instagram_profile`\n\n- **HTTP:** `GET /instagram/profile/{username}`\n- **What:** Retrieve an Instagram user profile by username. Returns public profile details for a specified Instagram username.\n- **Params:** `username` (string, **required**) — Instagram username\n\n### `instagram_reels`\n\n- **HTTP:** `GET /instagram/reels/{id}`\n- **What:** Retrieve Instagram Reels for a user. Returns a feed of Instagram Reels for the specified user ID. Supports pagination via `max_id`.\n- **Params:** `id` (string, **required**) — Numeric Instagram user ID (not a username); `max_id` (string, optional) — Pagination cursor for fetching the next page of Reels\n\nFile v1.0.12:skill-card.md\n\n## Description:\n\nResearches Instagram profiles, posts, and Reels via the Crawlora API, returning clean JSON for public profile stats, post media and engagement, and Reels feeds.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, analysts, and external business users use this skill to retrieve public Instagram profile, post, and Reels data for influencer vetting, competitor social audits, brand monitoring, and post-level engagement checks.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill sends requested public Instagram lookup targets and the Crawlora API key to Crawlora.\n\nMitigation: Use the skill only when that data sharing is acceptable, store the key in CRAWLORA_API_KEY, and prefer a low-privilege or quota-limited key.\n\nRisk: Untrusted or malformed paths could attempt to reach undocumented API routes or misuse curl query syntax.\n\nMitigation: Use only the documented Instagram GET endpoints and keep the helper's path and query validation in place.\n\nRisk: The skill is limited to public Instagram profile, post, and Reels data and does not access private content or broader Instagram search surfaces.\n\nMitigation: Use it for public-data research only and verify that requested analysis fits the documented endpoint scope.\n\n## Reference(s):\n\n- [Endpoint Reference](reference/endpoints.md)\n- [Crawlora](https://crawlora.net)\n- [ClawHub Skill Page](https://clawhub.ai/crawlora-org/skills/instagram-research)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, API calls, JSON]\n\n**Output Format:** [Markdown with inline shell commands and JSON API responses]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Uses the CRAWLORA_API_KEY environment variable and emits raw JSON from documented Crawlora Instagram GET endpoints.]\n\n## Skill Version(s):\n\n1.0.12 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.11: 5 files, 5512 bytes\n\nFiles: reference/endpoints.md (1539b), scripts/crawlora.sh (2920b), skill-card.md (1956b), SKILL.md (3826b), _meta.json (138b)\n\nFile v1.0.11:SKILL.md\n\n---\nname: instagram-research\ndescription: Researches Instagram profiles, posts, and Reels via the Crawlora API, returning clean JSON. Use when the user wants a public Instagram profile's stats, a specific post's media/engagement, or a user's Reels feed — instead of scraping the app.\n---\n\n# Instagram research\n\nLook up public Instagram profiles, posts, and Reels — all as normalized JSON\nfrom the Crawlora API, no app scraping or unofficial client libraries.\n\n## When to use this skill\n\n- \"What's <username>'s Instagram profile / follower count?\"\n- \"Pull the details for this Instagram post.\"\n- \"Get <username>'s recent Reels.\"\n- Competitor social audits, influencer vetting, or brand-mention monitoring\n  scoped to Instagram.\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- Set `CRAWLORA_API_KEY` in the environment before running the helper.\n- All requests: `x-api-key: $CRAWLORA_API_KEY` against\n  `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\n1. **Profile** — `/instagram/profile/{username}` returns public profile\n   details for a given Instagram username.\n2. **Reels** — `/instagram/reels/{id}` returns a feed of Reels for an\n   Instagram user ID, paginated via the optional `max_id` cursor.\n3. **Post detail** — `/instagram/post/{id}/{post_id}` returns the media\n   details of a specific post, keyed by Instagram user ID and post ID.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Profile:\nscripts/crawlora.sh /instagram/profile/nasa | jq '.'\n\n# Reels feed (paginate with max_id from the previous response):\nscripts/crawlora.sh /instagram/reels/528817151 | jq '.'\nscripts/crawlora.sh /instagram/reels/528817151 max_id=<cursor> | jq '.'\n\n# Post detail (requires both the user ID and the post ID):\nscripts/crawlora.sh /instagram/post/528817151/3123456789012345678 | jq '.'\n```\n\nRaw `curl` fallback:\n\n```sh\ncurl -fsS -H \"x-api-key: $CRAWLORA_API_KEY\" \\\n  \"https://api.crawlora.net/api/v1/instagram/profile/nasa\" | jq '.'\n```\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Instagram\nendpoint this skill uses.\n\n## Examples\n\n- **Influencer vetting:** profile + Reels feed to check follower count,\n  posting cadence, and content mix before a partnership.\n- **Competitor social audit:** pull a competitor's profile stats and recent\n  Reels to gauge follower growth and content strategy over time.\n- **Post-level engagement check:** given a known post URL, extract the user\n  ID and post ID, then call `/instagram/post/{id}/{post_id}` for that post's\n  media details.\n\n## Notes & limits\n\n- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.\n  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- **Public data only** — public profiles/posts; no login, no private content.\n  Respect Instagram's terms.\n- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.\n- **Numeric user ID, not username, for Reels and post lookups** —\n  `/instagram/reels/{id}` and `/instagram/post/{id}/{post_id}` both key off\n  Instagram's internal numeric user ID, not the `@username`; get it from the\n  `/instagram/profile/{username}` response first if you only have a handle.\n- **Narrow public surface** — this skill covers profile lookup, Reels feed,\n  and single-post detail only; there is no keyword/hashtag search or\n  trending endpoint for Instagram.\n- **Reels pagination** is cursor-based via `max_id` — follow the cursor\n  returned in the response to walk beyond the first page.\n\nFile v1.0.11:_meta.json\n\n{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"instagram-research\",\n  \"version\": \"1.0.11\",\n  \"publishedAt\": 1789041246008\n}\n\nFile v1.0.11:reference/endpoints.md\n\n# instagram-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**3 endpoints across 1 platform group(s).**\n\n## Instagram (3)\n\n### `instagram_post`\n\n- **HTTP:** `GET /instagram/post/{id}/{post_id}`\n- **What:** Retrieve a specific Instagram post by user ID and post ID. Returns the media details of a specific post from an Instagram user.\n- **Params:** `id` (string, **required**) — Instagram user ID; `post_id` (string, **required**) — Instagram post ID\n\n### `instagram_profile`\n\n- **HTTP:** `GET /instagram/profile/{username}`\n- **What:** Retrieve an Instagram user profile by username. Returns public profile details for a specified Instagram username.\n- **Params:** `username` (string, **required**) — Instagram username\n\n### `instagram_reels`\n\n- **HTTP:** `GET /instagram/reels/{id}`\n- **What:** Retrieve Instagram Reels for a user. Returns a feed of Instagram Reels for the specified user ID. Supports pagination via `max_id`.\n- **Params:** `id` (string, **required**) — Numeric Instagram user ID (not a username); `max_id` (string, optional) — Pagination cursor for fetching the next page of Reels\n\nFile v1.0.11:skill-card.md\n\n## Description:\n\nResearches Instagram profiles, posts, and Reels via the Crawlora API, returning clean JSON for public profile stats, post media and engagement, and Reels feeds.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, analysts, and external users use this skill to retrieve normalized JSON for public Instagram profile, post, and Reels research through Crawlora instead of scraping Instagram directly.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill sends requested public Instagram identifiers to Crawlora, a third-party service.\n\nMitigation: Use it only for public Instagram lookups and avoid submitting private Instagram data, secrets, cookies, session tokens, or unrelated personal data.\n\nRisk: The helper requires a Crawlora API key.\n\nMitigation: Store CRAWLORA_API_KEY in the environment and do not hardcode, pass in query parameters, or commit the key.\n\n## Reference(s):\n\n- [Endpoint reference](artifact/reference/endpoints.md)\n- [Crawlora](https://crawlora.net)\n- [ClawHub skill page](https://clawhub.ai/crawlora-org/skills/instagram-research)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with shell commands; API helper calls return JSON.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires CRAWLORA_API_KEY in the environment and works only with documented public Instagram profile, post, and Reels endpoints.]\n\n## Skill Version(s):\n\n1.0.11 (source: release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.10: 5 files, 5486 bytes\n\nFiles: reference/endpoints.md (1539b), scripts/crawlora.sh (2872b), skill-card.md (1842b), SKILL.md (3826b), _meta.json (138b)\n\nFile v1.0.10:SKILL.md\n\n---\nname: instagram-research\ndescription: Researches Instagram profiles, posts, and Reels via the Crawlora API, returning clean JSON. Use when the user wants a public Instagram profile's stats, a specific post's media/engagement, or a user's Reels feed — instead of scraping the app.\n---\n\n# Instagram research\n\nLook up public Instagram profiles, posts, and Reels — all as normalized JSON\nfrom the Crawlora API, no app scraping or unofficial client libraries.\n\n## When to use this skill\n\n- \"What's <username>'s Instagram profile / follower count?\"\n- \"Pull the details for this Instagram post.\"\n- \"Get <username>'s recent Reels.\"\n- Competitor social audits, influencer vetting, or brand-mention monitoring\n  scoped to Instagram.\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- Set `CRAWLORA_API_KEY` in the environment before running the helper.\n- All requests: `x-api-key: $CRAWLORA_API_KEY` against\n  `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\n1. **Profile** — `/instagram/profile/{username}` returns public profile\n   details for a given Instagram username.\n2. **Reels** — `/instagram/reels/{id}` returns a feed of Reels for an\n   Instagram user ID, paginated via the optional `max_id` cursor.\n3. **Post detail** — `/instagram/post/{id}/{post_id}` returns the media\n   details of a specific post, keyed by Instagram user ID and post ID.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Profile:\nscripts/crawlora.sh /instagram/profile/nasa | jq '.'\n\n# Reels feed (paginate with max_id from the previous response):\nscripts/crawlora.sh /instagram/reels/528817151 | jq '.'\nscripts/crawlora.sh /instagram/reels/528817151 max_id=<cursor> | jq '.'\n\n# Post detail (requires both the user ID and the post ID):\nscripts/crawlora.sh /instagram/post/528817151/3123456789012345678 | jq '.'\n```\n\nRaw `curl` fallback:\n\n```sh\ncurl -fsS -H \"x-api-key: $CRAWLORA_API_KEY\" \\\n  \"https://api.crawlora.net/api/v1/instagram/profile/nasa\" | jq '.'\n```\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Instagram\nendpoint this skill uses.\n\n## Examples\n\n- **Influencer vetting:** profile + Reels feed to check follower count,\n  posting cadence, and content mix before a partnership.\n- **Competitor social audit:** pull a competitor's profile stats and recent\n  Reels to gauge follower growth and content strategy over time.\n- **Post-level engagement check:** given a known post URL, extract the user\n  ID and post ID, then call `/instagram/post/{id}/{post_id}` for that post's\n  media details.\n\n## Notes & limits\n\n- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.\n  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- **Public data only** — public profiles/posts; no login, no private content.\n  Respect Instagram's terms.\n- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.\n- **Numeric user ID, not username, for Reels and post lookups** —\n  `/instagram/reels/{id}` and `/instagram/post/{id}/{post_id}` both key off\n  Instagram's internal numeric user ID, not the `@username`; get it from the\n  `/instagram/profile/{username}` response first if you only have a handle.\n- **Narrow public surface** — this skill covers profile lookup, Reels feed,\n  and single-post detail only; there is no keyword/hashtag search or\n  trending endpoint for Instagram.\n- **Reels pagination** is cursor-based via `max_id` — follow the cursor\n  returned in the response to walk beyond the first page.\n\nFile v1.0.10:_meta.json\n\n{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"instagram-research\",\n  \"version\": \"1.0.10\",\n  \"publishedAt\": 1789040519888\n}\n\nFile v1.0.10:reference/endpoints.md\n\n# instagram-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**3 endpoints across 1 platform group(s).**\n\n## Instagram (3)\n\n### `instagram_post`\n\n- **HTTP:** `GET /instagram/post/{id}/{post_id}`\n- **What:** Retrieve a specific Instagram post by user ID and post ID. Returns the media details of a specific post from an Instagram user.\n- **Params:** `id` (string, **required**) — Instagram user ID; `post_id` (string, **required**) — Instagram post ID\n\n### `instagram_profile`\n\n- **HTTP:** `GET /instagram/profile/{username}`\n- **What:** Retrieve an Instagram user profile by username. Returns public profile details for a specified Instagram username.\n- **Params:** `username` (string, **required**) — Instagram username\n\n### `instagram_reels`\n\n- **HTTP:** `GET /instagram/reels/{id}`\n- **What:** Retrieve Instagram Reels for a user. Returns a feed of Instagram Reels for the specified user ID. Supports pagination via `max_id`.\n- **Params:** `id` (string, **required**) — Numeric Instagram user ID (not a username); `max_id` (string, optional) — Pagination cursor for fetching the next page of Reels\n\nFile v1.0.10:skill-card.md\n\n## Description:\n\nResearches Instagram profiles, posts, and Reels via the Crawlora API, returning clean JSON for public profile, post, and Reels lookups.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, analysts, and social research teams use this skill to query public Instagram profile details, specific post media details, and a user's Reels feed through Crawlora instead of scraping Instagram directly.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The bundled helper supports authenticated POST requests even though the documented Instagram endpoints are GET-only.\n\nMitigation: Review before installation for read-only use, use a Crawlora API key with acceptable limits, avoid sending sensitive request bodies, and remove or disable the -X POST and -d paths unless Crawlora documents a need for them.\n\n## Reference(s):\n\n- [instagram-research endpoint reference](reference/endpoints.md)\n- [Crawlora](https://crawlora.net)\n- [Crawlora API base](https://api.crawlora.net/api/v1)\n\n## Skill Output:\n\n**Output Type(s):** [JSON, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown guidance with shell command examples and JSON API responses]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires CRAWLORA_API_KEY and returns public Instagram data only; Reels pagination uses the max_id cursor.]\n\n## Skill Version(s):\n\n1.0.10 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.9: 5 files, 5132 bytes\n\nFiles: reference/endpoints.md (1539b), scripts/crawlora.sh (2005b), skill-card.md (2007b), SKILL.md (3800b), _meta.json (137b)\n\nFile v1.0.9:SKILL.md\n\n---\nname: instagram-research\ndescription: Researches Instagram profiles, posts, and Reels via the Crawlora API, returning clean JSON. Use when the user wants a public Instagram profile's stats, a specific post's media/engagement, or a user's Reels feed — instead of scraping the app.\n---\n\n# Instagram research\n\nLook up public Instagram profiles, posts, and Reels — all as normalized JSON\nfrom the Crawlora API, no app scraping or unofficial client libraries.\n\n## When to use this skill\n\n- \"What's <username>'s Instagram profile / follower count?\"\n- \"Pull the details for this Instagram post.\"\n- \"Get <username>'s recent Reels.\"\n- Competitor social audits, influencer vetting, or brand-mention monitoring\n  scoped to Instagram.\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- `export CRAWLORA_API_KEY=sk_your_key_here`\n- All requests: `x-api-key: $CRAWLORA_API_KEY` against\n  `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\n1. **Profile** — `/instagram/profile/{username}` returns public profile\n   details for a given Instagram username.\n2. **Reels** — `/instagram/reels/{id}` returns a feed of Reels for an\n   Instagram user ID, paginated via the optional `max_id` cursor.\n3. **Post detail** — `/instagram/post/{id}/{post_id}` returns the media\n   details of a specific post, keyed by Instagram user ID and post ID.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Profile:\nscripts/crawlora.sh /instagram/profile/nasa | jq '.'\n\n# Reels feed (paginate with max_id from the previous response):\nscripts/crawlora.sh /instagram/reels/528817151 | jq '.'\nscripts/crawlora.sh /instagram/reels/528817151 max_id=<cursor> | jq '.'\n\n# Post detail (requires both the user ID and the post ID):\nscripts/crawlora.sh /instagram/post/528817151/3123456789012345678 | jq '.'\n```\n\nRaw `curl` fallback:\n\n```sh\ncurl -fsS -H \"x-api-key: $CRAWLORA_API_KEY\" \\\n  \"https://api.crawlora.net/api/v1/instagram/profile/nasa\" | jq '.'\n```\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Instagram\nendpoint this skill uses.\n\n## Examples\n\n- **Influencer vetting:** profile + Reels feed to check follower count,\n  posting cadence, and content mix before a partnership.\n- **Competitor social audit:** pull a competitor's profile stats and recent\n  Reels to gauge follower growth and content strategy over time.\n- **Post-level engagement check:** given a known post URL, extract the user\n  ID and post ID, then call `/instagram/post/{id}/{post_id}` for that post's\n  media details.\n\n## Notes & limits\n\n- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.\n  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- **Public data only** — public profiles/posts; no login, no private content.\n  Respect Instagram's terms.\n- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.\n- **Numeric user ID, not username, for Reels and post lookups** —\n  `/instagram/reels/{id}` and `/instagram/post/{id}/{post_id}` both key off\n  Instagram's internal numeric user ID, not the `@username`; get it from the\n  `/instagram/profile/{username}` response first if you only have a handle.\n- **Narrow public surface** — this skill covers profile lookup, Reels feed,\n  and single-post detail only; there is no keyword/hashtag search or\n  trending endpoint for Instagram.\n- **Reels pagination** is cursor-based via `max_id` — follow the cursor\n  returned in the response to walk beyond the first page.\n\nFile v1.0.9:_meta.json\n\n{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"instagram-research\",\n  \"version\": \"1.0.9\",\n  \"publishedAt\": 1789022940680\n}\n\nFile v1.0.9:reference/endpoints.md\n\n# instagram-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**3 endpoints across 1 platform group(s).**\n\n## Instagram (3)\n\n### `instagram_post`\n\n- **HTTP:** `GET /instagram/post/{id}/{post_id}`\n- **What:** Retrieve a specific Instagram post by user ID and post ID. Returns the media details of a specific post from an Instagram user.\n- **Params:** `id` (string, **required**) — Instagram user ID; `post_id` (string, **required**) — Instagram post ID\n\n### `instagram_profile`\n\n- **HTTP:** `GET /instagram/profile/{username}`\n- **What:** Retrieve an Instagram user profile by username. Returns public profile details for a specified Instagram username.\n- **Params:** `username` (string, **required**) — Instagram username\n\n### `instagram_reels`\n\n- **HTTP:** `GET /instagram/reels/{id}`\n- **What:** Retrieve Instagram Reels for a user. Returns a feed of Instagram Reels for the specified user ID. Supports pagination via `max_id`.\n- **Params:** `id` (string, **required**) — Numeric Instagram user ID (not a username); `max_id` (string, optional) — Pagination cursor for fetching the next page of Reels\n\nFile v1.0.9:skill-card.md\n\n## Description:\n\nResearches Instagram profiles, posts, and Reels via the Crawlora API, returning clean JSON.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, researchers, and social media analysts use this skill to retrieve public Instagram profile statistics, post media and engagement details, and user Reels feeds through Crawlora instead of scraping Instagram directly.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The bundled helper can send the user's Crawlora API key to arbitrary Crawlora API paths and methods beyond the stated Instagram-only workflow.\n\nMitigation: Review paths, HTTP methods, and request bodies before execution, and only allow trusted instructions to choose Crawlora requests.\n\nRisk: The skill requires access to a Crawlora API key.\n\nMitigation: Keep the key in CRAWLORA_API_KEY only; do not hardcode, commit, or pass it through query parameters.\n\n## Reference(s):\n\n- [Instagram Research Endpoint Reference](reference/endpoints.md)\n- [Crawlora](https://crawlora.net)\n- [Instagram Research on ClawHub](https://clawhub.ai/crawlora-org/skills/instagram-research)\n- [Crawlora Publisher Profile](https://clawhub.ai/user/crawlora-org)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with shell commands that return JSON from the Crawlora API]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires CRAWLORA_API_KEY; API responses contain public Instagram data only.]\n\n## Skill Version(s):\n\n1.0.9 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.","readmeExcerpt":"Skill: instagram-research Owner: crawlora-org Summary: Researches Instagram profiles, posts, and Reels via the Crawlora API, returning clean JSON. Use when the user wants a public Instagram profile's stats, a specific post's media/engagement, or a user's Reels feed — instead of scraping the app. Tags: latest:1.0.18 Version history: v1.0.18 | 2026-10-06T01:53:24.688Z | user Sync skill instructions, references, and hel","codeSnippets":[],"executableExamples":[{"language":"sh","snippet":"# Profile:\nscripts/crawlora.sh /instagram/profile/nasa | jq '.'\n\n# Reels feed (paginate with max_id from the previous response):\nscripts/crawlora.sh /instagram/reels/528817151 | jq '.'\nscripts/crawlora.sh /instagram/reels/528817151 max_id=<cursor> | jq '.'\n\n# Post detail (requires both the user ID and the post ID):\nscripts/crawlora.sh /instagram/post/528817151/3123456789012345678 | jq '.'"},{"language":"sh","snippet":"# Profile:\nscripts/crawlora.sh /instagram/profile/nasa | jq '.'\n\n# Reels feed (paginate with max_id from the previous response):\nscripts/crawlora.sh /instagram/reels/528817151 | jq '.'\nscripts/crawlora.sh /instagram/reels/528817151 max_id=<cursor> | jq '.'\n\n# Post detail (requires both the user ID and the post ID):\nscripts/crawlora.sh /instagram/post/528817151/3123456789012345678 | jq '.'"},{"language":"sh","snippet":"# Profile:\nscripts/crawlora.sh /instagram/profile/nasa | jq '.'\n\n# Reels feed (paginate with max_id from the previous response):\nscripts/crawlora.sh /instagram/reels/528817151 | jq '.'\nscripts/crawlora.sh /instagram/reels/528817151 max_id=<cursor> | jq '.'\n\n# Post detail (requires both the user ID and the post ID):\nscripts/crawlora.sh /instagram/post/528817151/3123456789012345678 | jq '.'"},{"language":"sh","snippet":"# Profile:\nscripts/crawlora.sh /instagram/profile/nasa | jq '.'\n\n# Reels feed (paginate with max_id from the previous response):\nscripts/crawlora.sh /instagram/reels/528817151 | jq '.'\nscripts/crawlora.sh /instagram/reels/528817151 max_id=<cursor> | jq '.'\n\n# Post detail (requires both the user ID and the post ID):\nscripts/crawlora.sh /instagram/post/528817151/3123456789012345678 | jq '.'"},{"language":"sh","snippet":"# Profile:\nscripts/crawlora.sh /instagram/profile/nasa | jq '.'\n\n# Reels feed (paginate with max_id from the previous response):\nscripts/crawlora.sh /instagram/reels/528817151 | jq '.'\nscripts/crawlora.sh /instagram/reels/528817151 max_id=<cursor> | jq '.'\n\n# Post detail (requires both the user ID and the post ID):\nscripts/crawlora.sh /instagram/post/528817151/3123456789012345678 | jq '.'"},{"language":"sh","snippet":"# Profile:\nscripts/crawlora.sh /instagram/profile/nasa | jq '.'\n\n# Reels feed (paginate with max_id from the previous response):\nscripts/crawlora.sh /instagram/reels/528817151 | jq '.'\nscripts/crawlora.sh /instagram/reels/528817151 max_id=<cursor> | jq '.'\n\n# Post detail (requires both the user ID and the post ID):\nscripts/crawlora.sh /instagram/post/528817151/3123456789012345678 | jq '.'"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: instagram-research\ndescription: Researches Instagram profiles, posts, and Reels via the Crawlora API, returning clean JSON. Use when the user wants a public Instagram profile's stats, a specific post's media/engagement, or a user's Reels feed — instead of scraping the app.\n---\n\n# Instagram research\n\nLook up public Instagram profiles, posts, and Reels — all as normalized JSON\nfrom the Crawlora API, no app scraping or unofficial client libraries.\n\n## When to use this skill\n\n- \"What's <username>'s Instagram profile / follower count?\"\n- \"Pull the details for this Instagram post.\"\n- \"Get <username>'s recent Reels.\"\n- Competitor social audits, influencer vetting, or brand-mention monitoring\n  scoped to Instagram.\n\n## Setup (one-time)\n\n- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- Set `CRAWLORA_API_KEY` in the environment before running the helper.\n- The helper reads `CRAWLORA_API_KEY` from the environment and sends requests to `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.\n\n## How it works\n\n1. **Profile** — `/instagram/profile/{username}` returns public profile\n   details for a given Instagram username.\n2. **Reels** — `/instagram/reels/{id}` returns a feed of Reels for an\n   Instagram user ID, paginated via the optional `max_id` cursor.\n3. **Post detail** — `/instagram/post/{id}/{post_id}` returns the media\n   details of a specific post, keyed by Instagram user ID and post ID.\n\nFull endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).\n\n## Calling the API\n\n```sh\n# Profile:\nscripts/crawlora.sh /instagram/profile/nasa | jq '.'\n\n# Reels feed (paginate with max_id from the previous response):\nscripts/crawlora.sh /instagram/reels/528817151 | jq '.'\nscripts/crawlora.sh /instagram/reels/528817151 max_id=<cursor> | jq '.'\n\n# Post detail (requires both the user ID and the post ID):\nscripts/crawlora.sh /instagram/post/528817151/3123456789012345678 | jq '.'\n```\n\nUse `scripts/crawlora.sh` for all requests; it keeps the API key out of command-line arguments.\n\n\n## Endpoint reference\n\nSee [`reference/endpoints.md`](reference/endpoints.md) for every Instagram\nendpoint this skill uses.\n\n## Examples\n\n- **Influencer vetting:** profile + Reels feed to check follower count,\n  posting cadence, and content mix before a partnership.\n- **Competitor social audit:** pull a competitor's profile stats and recent\n  Reels to gauge follower growth and content strategy over time.\n- **Post-level engagement check:** given a known post URL, extract the user\n  ID and post ID, then call `/instagram/post/{id}/{post_id}` for that post's\n  media details.\n\n## Notes & limits\n\n- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.\n  Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).\n- **Public data only** — public"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn70shhkf6qpfwgfrbgtep2wkd8c6b4t\",\n  \"slug\": \"instagram-research\",\n  \"version\": \"1.0.18\",\n  \"publishedAt\": 1791251604688\n}"},{"path":"reference/endpoints.md","content":"# instagram-research — endpoint reference\n\n> Generated from `scripts/tools.json` by `scripts/generate.mjs` — do not edit by hand.\n\nEndpoints this skill uses, grouped by platform. Call them via `scripts/crawlora.sh` (see SKILL.md).\n\nAll paths are relative to the API base `https://api.crawlora.net/api/v1` and require the header `x-api-key: $CRAWLORA_API_KEY`. Path params like `{id}` are substituted into the URL; `GET` params go in the query string; `POST` params go in a JSON body.\n\n**3 endpoints across 1 platform group(s).**\n\n## Instagram (3)\n\n### `instagram_post`\n\n- **HTTP:** `GET /instagram/post/{id}/{post_id}`\n- **What:** Retrieve a specific Instagram post by URL shortcode. Returns media details for an Instagram URL shortcode. Use media.code from the reels response or shortcode from a public post URL; numeric media IDs are rejected.\n- **Params:** `id` (string, **required**) — Instagram user ID retained for route compatibility; ownership is not verified; `post_id` (string, **required**) — Instagram URL shortcode (media.code), not a numeric media ID\n\n### `instagram_profile`\n\n- **HTTP:** `GET /instagram/profile/{username}`\n- **What:** Retrieve an Instagram user profile by username. Returns public profile details for a specified Instagram username.\n- **Params:** `username` (string, **required**) — Instagram username\n\n### `instagram_reels`\n\n- **HTTP:** `GET /instagram/reels/{id}`\n- **What:** Retrieve Instagram Reels for a user. Returns up to 12 public Reels via anonymous proxied HTTP for the numeric Instagram user ID. Supports opaque `max_id` pagination. Captions, timestamps and original image dimensions are omitted when the public source does not expose them.\n- **Params:** `id` (string, **required**) — Numeric Instagram user ID (not a username); `max_id` (string, optional) — Pagination cursor for fetching the next page of Reels"},{"path":"skill-card.md","content":"## Description:\n\nLooks up public Instagram profiles, posts, and Reels through the Crawlora API and returns structured JSON.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[crawlora-org](https://clawhub.ai/user/crawlora-org)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, analysts, and marketers use this skill to research public Instagram profiles, individual posts, and Reels for social audits or influencer vetting.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Public lookup identifiers and request data are sent to the third-party Crawlora service.\n\nMitigation: Use only for public lookups and avoid sensitive or private identifiers in routes and queries.\n\nRisk: The Crawlora API key is a credential needed for requests.\n\nMitigation: Keep CRAWLORA_API_KEY private; do not hardcode, expose, or commit it.\n\nRisk: Use of Instagram public data may be subject to service terms.\n\nMitigation: Review Crawlora's and Instagram's terms before use.\n\n## Reference(s):\n\n- [Instagram endpoint reference](artifact/reference/endpoints.md)\n- [Instagram Research release](https://clawhub.ai/crawlora-org/skills/instagram-research)\n\n## Skill Output:\n\n**Output Type(s):** [JSON, Text, Shell commands]\n\n**Output Format:** [JSON or text with shell examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Public profile, post, and Reels data; Reels pagination uses a cursor.]\n\n## Skill Version(s):\n\n1.0.18 (source: server-resolved release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1309,"uniquenessScore":43,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T12:13:43.272Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T12:13:43.272Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T15:19:24.023Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}