Hsoub APIio.hsoub.com ↗
Access Hsoub I/O community posts and full comment threads. Returns post summaries, body text, author profiles, avatars, and nested comments via 2 endpoints.
What is the Hsoub API?
The Hsoub I/O API exposes 2 endpoints for reading content from io.hsoub.com, an Arabic-language developer community. The list_latest_posts endpoint returns paginated post summaries — up to 200 posts across 8 pages — including post IDs, titles, canonical URLs, and author metadata. The get_post_comments endpoint fetches a single post's full body and its complete nested comment thread in one request, with per-comment fields including points, depth, and author avatars.
curl -X GET 'https://api.parse.bot/scraper/d3782a72-90c3-43e2-a205-455e961e74d5/list_latest_posts?page=3' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace io-hsoub-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Hsoub I/O SDK — browse latest posts and read comments."""
from parse_apis.io_hsoub_com_api import HsoubIO, PostNotFound
client = HsoubIO()
# Browse the latest posts on the community feed, capped at 5.
for post in client.posts.list(limit=5):
print(post.title, f"({post.community_name}) — {post.points} pts, {post.comment_count} comments")
# Drill into the first post's comment thread.
post = client.posts.list(limit=1).first()
if post is not None:
print(f"\nComments on: {post.title}")
for comment in post.comments.list(limit=10):
indent = " " * comment.depth
print(f"{indent}{comment.display_name}: {comment.body_text[:80]}")
# A deleted or non-existent post raises PostNotFound.
try:
# Re-fetch comments to show error handling on a stale reference.
for c in post.comments.list(limit=3):
pass
except PostNotFound as e:
print(f"Post gone: {e.message}")
print("\nexercised: posts.list / comments.list")
Returns the site's 'latest' (الأحدث) post feed, 25 posts per page in the site's own newest-first order. Each row is one post summary: numeric post_id, title, canonical URL, community slug/name (null for posts outside a community), author username/display name/profile URL (null when the site shows no author), ISO-8601 published_at (UTC), vote points, comment_count and a text excerpt. Pagination: page defaults to 1; the site paginates by excluding already-seen posts, so page N costs N round trips and page is capped at 8 (200 posts). has_more/next_page describe continuation inside that cap. A page beyond the feed's end returns an empty posts array.
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based page of 25 posts; integer from 1 to 8. |
{
"type": "object",
"fields": {
"page": "integer page requested",
"posts": "array of post summaries: post_id, title, url, community_slug, community_name, author_username, author_display_name, author_url, published_at, points, comment_count, excerpt",
"has_more": "boolean, true when another page is available within the page cap",
"next_page": "integer page to request next, or null",
"page_size": "integer, always 25"
},
"sample": {
"data": {
"page": 1,
"posts": [
{
"url": "https://io.hsoub.com/webdev/185887-%D8%B2%D8%A7%D9%88%D9%85%D9%88",
"title": "زاومو ضيف لحظة وخلي الناس اتضيف زوايا",
"points": 0,
"excerpt": "فكرة زاومو هو تطبيق يحتوي على لحظات...",
"post_id": "185887",
"author_url": "https://io.hsoub.com/u/12ayesh",
"published_at": "2026-10-14T09:27:33+00:00",
"comment_count": 0,
"community_name": "تطوير الويب",
"community_slug": "webdev",
"author_username": "12ayesh",
"author_display_name": "12Ayesh"
}
],
"has_more": true,
"next_page": 2,
"page_size": 25
},
"status": "success"
}
}About the Hsoub API
Post Feed
The list_latest_posts endpoint returns the site's newest-first feed in pages of 25 posts. The page parameter accepts integers from 1 to 8, and the response includes a has_more boolean and a next_page integer to drive pagination. Each post summary carries a numeric post_id, title, url, community_slug, community_name, and author fields (author_username, author_display_name, author_url). Community fields are null for posts outside a named community.
Post Detail and Comments
The get_post_comments endpoint accepts a post_id string — as emitted by list_latest_posts — and returns both the full post object and its entire comment thread in a single response. The post object includes body_text, published_at, author_avatar_url, and author_url. Because the site renders all comments on a single page, no comment pagination is needed; the response delivers every comment at once alongside a comment_count integer.
Comment Structure
Each comment in the comments array includes comment_id, parent_comment_id, and depth fields that together describe the thread hierarchy. Additional per-comment fields cover username, display_name, profile_url, avatar_url, published_at, points, and body text. This makes it straightforward to reconstruct threaded discussions or compute engagement metrics without additional requests.
The Hsoub API is a managed, monitored endpoint for io.hsoub.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when io.hsoub.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official io.hsoub.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor trending topics on the Hsoub I/O community by polling
list_latest_postsand tracking new post titles and community slugs over time. - Build an Arabic developer content aggregator using
title,url, andcommunity_namefrom the post feed. - Analyze comment engagement by comparing
pointsandcomment_countacross posts fetched withget_post_comments. - Reconstruct nested discussion threads using
parent_comment_idanddepthfields from the comments array. - Profile active community contributors by aggregating
author_usernameandauthor_urlacross multiple pages of posts. - Track author activity over time by combining
published_attimestamps from both post and comment responses. - Display post summaries with author avatars in a third-party reader app using
author_avatar_urlfromget_post_comments.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Hsoub I/O have an official developer API?+
What does `get_post_comments` return for a post with no comments?+
body_text, author_avatar_url, and published_at — along with an empty comments array and a comment_count of 0.How far back does `list_latest_posts` go?+
Can I search posts by keyword or filter by community?+
list_latest_posts endpoint returns the site-wide latest feed without keyword search or community filtering. You can fork this API on Parse and revise it to add a search or community-scoped endpoint.Does the API return vote counts or view counts on posts from the feed?+
list_latest_posts do not include vote or view counts; those fields are not part of the feed response. Per-comment points are available from get_post_comments, but post-level vote or view metrics are not currently exposed. You can fork this API on Parse and revise it to add those fields if the source makes them available.