# Linkme Social Grid API Documentation

Scrappa's `GET /api/link-in-bio/linkme/social-grid` endpoint reads a Linkme profile's published media grid as structured JSON. Pass either `handle` or a full `url`, an optional `limit`, and an optional `cursor` taken from the previous response's `next_cursor`.

This is a **separate, opt-in call** and is never included in the main Linkme profile lookup, so it is accounted for separately. Page through results until `next_cursor` is `null`; a cursor is an opaque server token and must be passed back exactly as returned. A profile that exists but has published nothing returns a successful, non-billable empty result.

- **Documentation:** [https://scrappa.co/docs/link-in-bio-api/link_in_bio_linkme_social_grid](https://scrappa.co/docs/link-in-bio-api/link_in_bio_linkme_social_grid)
- **API group:** Link-in-Bio API
- **Endpoint:** `GET https://scrappa.co/api/link-in-bio/linkme/social-grid`

## 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 |
| --- | --- | --- | --- |
| `handle` | string | No | Linkme username, for example linkme. |
| `url` | string | No | Full Linkme profile URL. |
| `limit` | integer | No | Items per page, between 1 and 48. Defaults to 24. |
| `cursor` | string | No | Opaque cursor from a previous response's next_cursor. Pass it back verbatim. |

## Example request

```bash
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/link-in-bio/linkme/social-grid?handle=linkme&limit=2"
```

## Example response

```json
{
    "provider": "linkme",
    "surface": "social-grid",
    "handle": "linkme",
    "limit": 2,
    "next_cursor": "WyIyMDI2LTA4LTAxVDEwOjAwOjAwLjAwMFoiLDI0LHRydWUl",
    "items": [
        {
            "id": 24,
            "caption": "New video out now",
            "media_type": "video",
            "published_at": "2026-08-01T10:00:00.000Z",
            "thumbnail_url": "https://cdn.example.com/item-24.webp"
        },
        {
            "id": 23,
            "caption": null,
            "media_type": "image",
            "published_at": "2026-07-30T18:30:00.000Z",
            "thumbnail_url": "https://cdn.example.com/item-23.webp"
        }
    ],
    "meta": {
        "duration_ms": 620,
        "attempts": 1,
        "billable": true
    }
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 404 | Profile Not Found | No public profile exists for this handle. |
| 503 | Upstream Unavailable | The profile could not be read from its source right now. Please retry. |
| 422 | Request Rejected Upstream | The source rejected this request, for example because the handle was not acceptable to it. |
| 503 | Profile Host Blocked the Request | The provider's bot protection refused this request after every available exit was tried. This is not a billing event; retry later. |
| 422 | Invalid Handle or URL | The handle was not in a supported format, or the URL did not belong to this endpoint's provider. |

## More Scrappa resources

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