# Instagram Profile API

Retrieve Instagram profile API data including biography, bio links, follower/following counts, profile picture, and available story highlights, reel presence, text-post app badge, and account-status fields. A completed lookup costs one credit, including a definitive not-found result, because every lookup uses costly dedicated Instagram proxies. Use the separate /user/posts endpoint to fetch the user's posts. The media_count field is the total post count when an exact count is available; unavailable fields may be null. New profile extras are null when not supplied. Existing is_business_account and is_professional_account fields default to false when not supplied. Highlights are a snapshot: more_available indicates additional highlights, and next_cursor is informational; this endpoint does not accept a highlights cursor. Login-required failures do not consume credits.

- **Documentation:** [https://staging.scrappa.co/docs/instagram-api/instagram_user](https://staging.scrappa.co/docs/instagram-api/instagram_user)
- **API group:** Instagram API
- **Endpoint:** `GET https://scrappa.co/api/v2/instagram/user`

## Authentication

Send your Scrappa API key in the `X-API-KEY` request header. Paid endpoints also support accountless x402 payments when called without an API key.

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `username` | string | Yes | Instagram username (without @) |

## Example request

```bash
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/v2/instagram/user?username=natgeo"
```

## Example response

```json
{
    "success": true,
    "found": true,
    "user": {
        "id": "787132",
        "username": "natgeo",
        "full_name": "National Geographic",
        "biography": "Experience the world through the eyes of National Geographic photographers.",
        "bio_links": [
            {
                "title": "",
                "url": "https://www.nationalgeographic.com",
                "link_type": "external"
            }
        ],
        "external_url": "https://www.nationalgeographic.com",
        "profile_pic_url": "https://...",
        "profile_pic_url_hd": "https://...",
        "is_verified": true,
        "is_private": false,
        "is_business_account": true,
        "is_professional_account": true,
        "category_name": "Media/news company",
        "follower_count": 280000000,
        "following_count": 160,
        "media_count": 30000,
        "pronouns": [],
        "has_any_clips": true,
        "is_memorialized": false,
        "is_unpublished": false,
        "text_post_app_badge_label": "natgeo",
        "show_text_post_app_badge": true,
        "highlights": {
            "items": [
                {
                    "id": "18220017724061811",
                    "title": "Highlights",
                    "cover_url": "https://example.com/highlight.jpg",
                    "owner_username": "natgeo"
                }
            ],
            "more_available": false,
            "next_cursor": null
        }
    }
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 403 | Login Required | Instagram explicitly requires login. Scrappa does not retry the login-gated resource. Profile lookups may recover from public profile data; unresolved login requirements are nonbillable and not retryable. |
| 422 | Validation Error | The username parameter is missing or not a valid Instagram username. |
| 429 | Rate Limited | Instagram rate limited the upstream request. Retry after the response delay when present. |
| 502 | Instagram Upstream Unavailable | The upstream service is temporarily unavailable. Please retry shortly. |

## More Scrappa resources

- [API documentation](https://staging.scrappa.co/docs)
- [Full LLM-readable API reference](https://staging.scrappa.co/llms-full.txt)
- [OpenAPI specification](https://staging.scrappa.co/docs/api.json)
- [Pricing](https://staging.scrappa.co/pricing)
