jsonplaceholder.typicode.com APIjsonplaceholder.typicode.com ↗
Access JSONPlaceholder's full fake REST API: posts, comments, albums, photos, todos, and users. 40 endpoints for testing and prototyping.
curl -X GET 'https://api.parse.bot/scraper/fb23009a-bb34-498d-8d88-5b085f983739/get_posts?user_id=1' \ -H 'X-API-Key: $PARSE_API_KEY'
Get all posts or filter by userId. Returns an array of post objects. The dataset contains 100 posts spanning userId 1-10 with 10 posts per user.
| Param | Type | Description |
|---|---|---|
| user_id | integer | Filter posts by user ID (1-10). |
{
"type": "object",
"fields": {
"data": "array of post objects, each with userId, id, title, body",
"status": "string"
},
"sample": {
"data": [
{
"id": 1,
"body": "quia et suscipit...",
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"userId": 1
}
],
"status": "success"
}
}About the jsonplaceholder.typicode.com API
This API exposes all 40 endpoints of JSONPlaceholder, a static fake REST dataset commonly used for testing and prototyping. It covers six resource types — posts, comments, albums, photos, todos, and users — with full CRUD operations on each. For example, get_posts returns an array of 100 post objects (fields: userId, id, title, body), and you can filter by user_id to scope results to any of the 10 fictional users in the dataset.
Posts and Comments
The posts collection contains 100 records spread evenly across user IDs 1–10. get_posts accepts an optional user_id integer to return only that user's 10 posts. get_post retrieves a single record by post_id (1–100) and returns userId, id, title, and body. The comments collection has 500 records, exactly 5 per post. You can fetch them either via get_post_comments (nested path, requires post_id) or via get_comments with an optional post_id filter. Each comment object carries postId, id, name, email, and body.
Write Operations
All six resource types support create, full-update (PUT), partial-update (PATCH), and delete verbs. create_post expects title, body, and user_id; it always echoes back id: 101 because the dataset is static — no record is actually persisted. The same mock behavior applies to update_post, patch_post, and delete_post. patch_post is the only write endpoint that accepts a subset of fields; omitted fields reflect the original stored values in the response.
Albums and Photos
get_albums returns 100 album objects (userId, id, title), filterable by user_id. get_album_photos uses the nested resource path and returns all 50 photos for a given album. Each photo object includes albumId, id, title, url, and thumbnailUrl. The url and thumbnailUrl fields point to placeholder image URLs in the JSONPlaceholder dataset — they are not real hosted images.
- Prototype a blog UI against real-shaped post and comment data before wiring a production backend.
- Test pagination logic using the fixed 100-post or 500-comment dataset with predictable record counts.
- Validate client-side form submission flows using the mock
create_postandcreate_commentendpoints. - Build and test a photo gallery component using
get_album_photoswhich returnsurlandthumbnailUrlper photo. - Teach REST API fundamentals — GET, POST, PUT, PATCH, DELETE — using a live endpoint with known response shapes.
- Integration-test error handling by requesting out-of-range IDs (e.g., post_id > 100) to observe 404 behavior.
- Verify that a PATCH implementation correctly merges partial fields using
patch_postorpatch_comment.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does JSONPlaceholder have an official developer API?+
What does `get_post_comments` return compared to `get_comments`?+
get_post_comments uses the nested /posts/{id}/comments path and requires a post_id; it always returns exactly 5 comment objects for that post. get_comments hits the flat /comments collection and accepts an optional post_id query parameter. Both return identical comment object shapes: postId, id, name, email, and body.Do write operations (create, update, delete) actually modify data?+
create_post always returns id: 101, create_comment always returns id: 501, and delete endpoints return an empty object. No state is persisted between requests.Does this API cover the todos and users resources?+
Can I filter posts or comments by fields other than user ID or post ID?+
get_posts filters only by user_id and get_comments filters only by post_id; no full-text, date, or title filtering is available in the dataset. You can fork this API on Parse and revise it to add client-side filtering logic over the returned arrays.