HS PrepSports APIhsprepsports.com ↗
Access high school sports articles, recruiting news, player spotlights, and rankings from HS PrepSports via 3 endpoints for search, listing, and full article retrieval.
What is the HS PrepSports API?
The HS PrepSports API provides access to high school sports content across 3 endpoints, returning article listings, full article bodies, and search results covering news, recruiting, rankings, and player spotlights. The get_article endpoint delivers 9 response fields including body_text, body_html, keywords, and author, while list_articles lets you filter by sport category slug to narrow results to a specific athletic discipline.
curl -X GET 'https://api.parse.bot/scraper/f5477fc5-256d-43f3-9efb-61fdf2ff7b30/list_articles?sport=football' \ -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 hsprepsports-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: HS PrepSports SDK — browse, search, and read full articles."""
from parse_apis.hsprepsports_com_api import HSPrepSports, ArticleNotFound
client = HSPrepSports()
# List recent articles across all sports, capped at 5 total items.
for summary in client.article_summaries.list(limit=5):
print(summary.title, summary.url)
# Search for football articles and drill into the first result.
hit = client.article_summaries.search(query="football", limit=1).first()
if hit is not None:
# Navigate from summary to full article detail via the typed relationship.
article = hit.details()
print(article.title)
print(article.author, article.date_published)
print(article.body_text[:200])
# Point lookup by slug discovered from the search result above.
if hit is not None:
try:
full = client.articles.get(slug=hit.slug)
print(full.section, full.title)
except ArticleNotFound:
print("Article no longer available")
print("exercised: article_summaries.list / article_summaries.search / details / articles.get")
Lists articles from the HS PrepSports blog. When sport is provided, returns articles filtered to that sport category. Returns the current article listing without pagination — typically 5–12 articles per category page.
| Param | Type | Description |
|---|---|---|
| sport | string | Sport category slug to filter articles. When omitted, returns all recent blog articles. |
{
"type": "object",
"fields": {
"count": "integer total number of articles returned",
"articles": "array of article summary objects with slug, title, description, author, sport, image_url, published_ago, and url"
},
"sample": {
"count": 12,
"articles": [
{
"url": "https://hsprepsports.com/article/rockfords-athlete-of-the-week-is-built-different-7-6999",
"slug": "rockfords-athlete-of-the-week-is-built-different-7-6999",
"sport": "",
"title": "Rockford's Athlete of the Week Is Built Different",
"author": "",
"image_url": "/images/default-article.jpg",
"description": "",
"published_ago": ""
}
]
}
}About the HS PrepSports API
What the API Covers
The HS PrepSports API surfaces editorial content from hsprepsports.com — articles covering high school athletics including recruiting updates, player spotlights, rankings, and sport-specific news. All three endpoints return article metadata at minimum: slug, title, description, url, and image_url. The list_articles and search_articles endpoints also include sport and published_ago fields to help orient results chronologically and by category.
Endpoints and Parameters
list_articles accepts an optional sport parameter — a category slug such as football or basketball — and returns between 5 and 12 article summaries from that category page. When sport is omitted, it returns recent articles across all sports. search_articles takes a required query string (e.g. 'basketball recruiting') and returns up to 5–10 matching results from the site's search index, including the count and the echoed query string for confirmation. Neither endpoint supports cursor-based or offset pagination.
Full Article Details
get_article requires a slug obtained from either list_articles or search_articles results. It returns the complete article including body_html and body_text (the full editorial content in both formats), section, keywords (an array of topic strings), author, image_url, description, and the canonical url. This endpoint is the right choice when you need the full text of a piece for indexing, analysis, or display.
The HS PrepSports API is a managed, monitored endpoint for hsprepsports.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when hsprepsports.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 hsprepsports.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?+
- Aggregate high school football recruiting news by filtering
list_articleswith the football sport slug - Build a player spotlight feed by searching
search_articlesfor a specific athlete's name and retrieving full articles viaget_article - Extract keyword arrays from
get_articleresponses to tag and categorize high school sports content in a CMS - Monitor ranking articles across sports by searching for 'rankings' and tracking publication recency via
published_ago - Pull
body_textfromget_articlefor NLP analysis or summarization of recruiting trend articles - Display sport-specific news widgets by using
list_articleswith a sport slug and renderingtitle,description, andimage_url
| 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 HS PrepSports have an official developer API?+
What does `get_article` return beyond the article text?+
get_article returns body_html and body_text for the full article content, plus keywords (an array of topic strings), section, author, image_url, description, slug, and the canonical url. It does not return structured player statistics or roster data — only editorial article content.Can I paginate through all articles for a given sport?+
list_articles returns what is available on a single category page, typically 5–12 articles. There is no pagination parameter, so deep historical browsing is not supported. You can fork this API on Parse and revise it to add offset or page-based pagination if you need broader archive access.Does the API return player statistics, scores, or schedules?+
How fresh are the articles returned by `list_articles`?+
published_ago field in each article summary tells you relative publication time (e.g. '2 days ago'), but the API does not expose an absolute ISO timestamp. Results are as current as the live site pages.