Hematology APIsubmit.hematology.org ↗
Access sessions, presentations, and abstracts from the ASH Annual Meeting program. Search by keyword, filter by topic, and retrieve full session details with author data.
What is the Hematology API?
This API exposes 4 endpoints covering the ASH Annual Meeting program at submit.hematology.org, giving structured access to sessions, presentations, and abstracts from one of hematology's largest annual conferences. The get_abstracts endpoint alone returns fields including publication number, abstract URL, author credentials, institutional affiliations, topic, and category classifications. All list endpoints support keyword search and return consistent pagination metadata.
curl -X GET 'https://api.parse.bot/scraper/1ee53041-bf8d-4a53-a580-2d6265680507/get_sessions?page=1&query=lymphoma&per_page=5' \ -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 submit-hematology-org-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.
"""ASH Annual Meeting Program: search sessions, presentations, and abstracts."""
from parse_apis.ash_annual_meeting_program_api import ASH, SessionNotFound
client = ASH()
# Search sessions by keyword, cap at 3 results
for session in client.sessionsummaries.search(query="lymphoma", limit=3):
print(session.title, session.room, session.session_type)
# Drill into the first session's full detail
summary = client.sessionsummaries.search(query="CAR T", limit=1).first()
if summary:
detail = summary.details()
print(detail.title, detail.description[:80] if detail.description else "")
for chair in detail.chairs[:3]:
print(chair.type, chair.user_id)
# Search presentations
pres = client.presentations.search(query="ctDNA", limit=1).first()
if pres:
print(pres.title, pres.content_type)
if pres.main_author:
print(pres.main_author.surname, pres.main_author.institute)
# Search abstracts
for abstract in client.abstracts.search(query="myeloma", limit=3):
print(abstract.title, abstract.publication_number, abstract.topic)
# Typed error handling: fetch a session that doesn't exist
try:
client.sessions.get(manage_id="9999999")
except SessionNotFound as exc:
print(f"Session not found: manage_id={exc.manage_id}")
print("exercised: sessionsummaries.search / details / sessions.get / presentations.search / abstracts.search")List sessions from the ASH Annual Meeting program with pagination and optional keyword search. Returns session details including title, times, location/room, session type, tags, chairs, and groups. Results are ordered by start time ascending. Paginates via integer page counter.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| query | string | Search query to filter sessions by keyword. |
| per_page | integer | Number of results per page (max 100). |
{
"type": "object",
"fields": {
"sessions": "array of session summary objects with id, manage_id, title, starts_at, ends_at, room, session_type, tags, chairs, session_groups",
"pagination": "object with page, per_page, total, total_pages, current_items, next_page"
}
}About the Hematology API
Sessions and Session Detail
The get_sessions endpoint returns paginated session summaries ordered by start time. Each object includes id, manage_id, title, starts_at, ends_at, room, session_type, tags, chairs, and session_groups. Use the manage_id field as input to get_session_detail, which returns the full session record including an HTML description, chair names with credentials, and all nested presentations with their individual time slots and authors.
Presentations
The get_presentations endpoint lists individual presentations across the program. Each presentation object carries its parent session relationship, content_type, topic, categories, and authors with affiliations. Results are ordered by start time and support the same page, per_page (up to 100), and query parameters available across all list endpoints.
Abstracts
The get_abstracts endpoint exposes the research abstract layer of the program. Each record includes title, ref (reference ID), publication_number, abstract_url, topic, categories, and an authors array with credentials and institutional affiliations. An optional session relationship is included when the abstract is linked to a scheduled session. Keyword search via the query parameter accepts disease names, drug names, or author names.
The Hematology API is a managed, monitored endpoint for submit.hematology.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when submit.hematology.org 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 submit.hematology.org 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?+
- Build a searchable index of ASH Annual Meeting abstracts filtered by disease area or drug name using the
queryparameter onget_abstracts. - Compile a schedule of all sessions in a specific room or time block using
starts_at,ends_at, androomfields fromget_sessions. - Generate an author-centric view of the program by aggregating
authorsandaffiliationsacrossget_presentationsresults. - Map institutional representation at ASH by extracting author affiliation data from
get_abstracts. - Retrieve full session programs including nested presentations and chair credentials using
get_session_detailwith amanage_id. - Track publication numbers and abstract URLs from
get_abstractsto cross-reference with journal publications. - Categorize ASH program content by
topicandcategoriesfields across sessions, presentations, and abstracts for research landscape analysis.
| 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 | 100 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 ASH (American Society of Hematology) offer an official developer API for its meeting program?+
What does `get_session_detail` return beyond what `get_sessions` provides?+
get_session_detail returns everything in the summary plus an HTML description field, full chair objects with credentials, and a nested array of presentations with individual start/end times and author details. The summary from get_sessions includes manage_id and basic metadata but not the description or nested presentations.Does the keyword search in `get_abstracts` search the full abstract text or only titles?+
query parameter filters results by keyword and accepts terms like disease names, drug names, or author names. The API does not expose a separate full-text body field in responses; each record includes title, topic, categories, and abstract_url rather than the full abstract prose.Does the API cover multiple years of ASH Annual Meeting programs?+
Can I retrieve the full abstract text body through these endpoints?+
get_abstracts endpoint returns title, ref, publication_number, abstract_url, author metadata, topic, and categories, but not the full abstract prose body. The abstract_url field points to the source page where full text is available. You can fork this API on Parse and revise it to add a detail endpoint that retrieves the abstract body from that URL.