# Threads User Posts

List recent posts by a Threads account. The upstream returns up to 25 posts per request. Supplying user_id removes the handle-resolution lookup and makes the request a single upstream lookup; without it, a cold cache resolves the handle first. Responses cover page 1 only.

- **Documentation:** [https://scrappa.co/docs/threads-api/threads_user_posts](https://scrappa.co/docs/threads-api/threads_user_posts)
- **API group:** Threads API
- **Endpoint:** `GET https://scrappa.co/api/threads/user-posts`

## 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 | Threads handle without the leading @. |
| `user_id` | integer | No | Optional numeric primary key. Supplying it skips the handle-resolution lookup. |

## Example response

```json
{
    "meta": {
        "attempts": 1,
        "duration_ms": 820,
        "endpoint_family": "threads_user_posts"
    },
    "posts": [],
    "search_parameters": {
        "engine": "threads_user_posts",
        "username": "natgeo",
        "upstream_lookups": 1
    }
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 404 | Not Found | Returned, and not billed, when the handle, post code or hashtag does not exist or is not publicly available. |
| 422 | Validation Error | Returned, and not billed, when a parameter is missing or outside its allowed range. |
| 503 | Service Unavailable | A retryable, non-billable failure. The upstream returned a degraded or unreadable response, or the request budget ran out. |

## 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)
