Canal do Surf APIcanaldosurf.com ↗
Access surf news articles from canaldosurf.com. Search by keyword or category, paginate results, and fetch full article content by post ID.
What is the Canal do Surf API?
The Canal do Surf API exposes 2 endpoints for retrieving surf news articles from canaldosurf.com, a Brazilian publication covering WSL competitions, Brazilian surfers, and surf culture. The search_news endpoint returns paginated article summaries with titles, excerpts, dates, slugs, and category IDs, while get_article delivers full article content — including HTML and plain text — for any numeric post ID.
curl -X GET 'https://api.parse.bot/scraper/36c2095b-dfcc-441c-ba14-7511e39d2a4c/search_news?category=surf&per_page=5&page=1&query=surf' \ -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 canaldosurf-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: Canal do Surf news SDK — bounded, re-runnable."""
from parse_apis.canaldosurf_com_api import CanalDoSurf, Category, ArticleNotFound
client = CanalDoSurf()
# Search surf news articles filtered by category, capped at 5 total items.
for article_summary in client.article_summaries.search(category=Category.SURF, limit=5):
print(article_summary.title, article_summary.date)
# Drill down: take the first result and fetch full article details.
summary = client.article_summaries.search(query="WSL", limit=1).first()
if summary is not None:
article = summary.details()
print(article.title)
print(article.content_text[:200])
print("tags:", article.tags)
# Point lookup by a known post ID.
try:
detail = client.articles.get(post_id="2079")
print(detail.title, detail.modified)
except ArticleNotFound:
print("Article not found")
print("exercised: article_summaries.search / details / articles.get")
Search or list surf news articles with optional text query, category filter, and pagination. Returns articles sorted by date descending. Pagination is controlled by page and per_page; the response includes total article count and total pages.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-indexed). |
| query | string | Free-text search query to filter articles by keyword (e.g. 'pipeline', 'WSL'). |
| category | string | Category slug to filter articles. Known slugs: surf, na-agua, terra, ar. The value is forwarded to the upstream API which validates it. |
| per_page | integer | Number of articles per page (1-100). |
{
"type": "object",
"fields": {
"page": "current page number",
"total": "total number of matching articles",
"articles": "array of article summary objects with id, title, slug, date, link, excerpt, categories, featured_media, author",
"per_page": "articles per page",
"total_pages": "total number of pages available"
},
"sample": {
"data": {
"page": 1,
"total": 10,
"articles": [
{
"id": 2079,
"date": "2026-05-12T09:26:26",
"link": "https://canaldosurf.com/o-10-perfeito-que-assustou-a-wsl-em-casablanca-%f0%9f%8c%8a/",
"slug": "o-10-perfeito-que-assustou-a-wsl-em-casablanca-%f0%9f%8c%8a",
"title": "O 10 PERFEITO que assustou a WSL em Casablanca 🌊",
"author": 1,
"excerpt": "O 10 PERFEITO que assustou a WSL em Casablanca...",
"categories": [
144
],
"featured_media": 2080
}
],
"per_page": 2,
"total_pages": 5
},
"status": "success"
}
}About the Canal do Surf API
What the API Covers
Canal do Surf is a Brazilian surf news site focused on WSL tour coverage, profiles of Brazilian athletes, competition results, and surf culture. The API surfaces its article catalog through two endpoints. Responses include structured metadata such as title, slug, date, link, excerpt, categories, featured_media, and author for every article returned by search_news.
Searching and Filtering Articles
The search_news endpoint accepts an optional query string for free-text keyword search (for example, 'pipeline' or 'WSL') and an optional category slug to narrow results. Known category slugs are surf, na-agua, terra, and ar. Pagination is controlled by the page (1-indexed) and per_page (1–100) parameters. The response includes total, total_pages, and the current page alongside the articles array, making it straightforward to walk through large result sets.
Fetching Full Article Content
The get_article endpoint accepts a numeric post_id — obtained from search_news results — and returns the complete article record. Fields include title, excerpt, date, modified, link, slug, author, categories, and tags as arrays of numeric IDs. Both HTML and plain-text representations of the article body are returned, giving consumers flexibility in how they process the content.
Data Shape Notes
Author and category fields are returned as numeric IDs rather than display names in both endpoints. Tags in get_article are also numeric IDs. There is no endpoint that resolves these IDs to human-readable labels within the current API surface.
The Canal do Surf API is a managed, monitored endpoint for canaldosurf.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when canaldosurf.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 canaldosurf.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 WSL competition coverage by querying
search_newswith the query'WSL'and tracking new articles bydate. - Build a Portuguese-language surf news feed filtered to the
na-aguacategory using thecategoryparameter. - Aggregate article metadata (title, excerpt, date, link) for a surf content digest or newsletter.
- Retrieve full article HTML via
get_articlefor downstream NLP tasks such as entity extraction or sentiment analysis on surf news. - Track publication frequency for specific Brazilian surfers by searching their names and counting results over time.
- Populate a surf media archive by paginating all articles with
per_page=100and storing structured metadata. - Cross-reference Canal do Surf article dates with WSL event calendars to correlate competition outcomes with coverage volume.
| 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 canaldosurf.com have an official developer API?+
What does search_news return and how do I filter by topic?+
id, title, slug, date, link, excerpt, categories, featured_media, and author. You can filter by passing a query string (e.g. 'gabriel medina') or a category slug (surf, na-agua, terra, ar). Both filters are optional and can be combined. Results are sorted by date descending.Are author names and category names returned directly?+
author as a single numeric ID and categories as an array of numeric IDs. The current API does not include an endpoint to resolve those IDs to display names. You can fork the API on Parse and revise it to add a lookup or enrichment endpoint for author and category metadata.Does the API cover surf forecasts, contest scores, or video content?+
How fresh is the article data?+
date (original publication) and a modified field (last update), both in ISO format. The API does not provide a real-time event stream; freshness depends on when you poll search_news. For near-real-time monitoring, you would need to poll periodically and compare date or modified values against your last-fetched timestamp.