CEO APIceo.ca ↗
Access CEO.ca discussion threads, popular posts, and trending stocks via API. Retrieve engagement scores, post content, price quotes, and channel categories.
What is the CEO API?
The CEO.ca API exposes 3 endpoints covering discussion threads, popular posts, and trending stocks from the CEO.ca investment community. The get_discussion_thread endpoint returns channel-specific post feeds for any stock ticker or named topic, while get_trending_stocks delivers live price quotes alongside company details and channel category groupings such as commodities and crypto.
curl -X GET 'https://api.parse.bot/scraper/21ba56c5-84da-4f86-a937-a098c1c6868e/get_popular_posts?limit=10' \ -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 ceo-ca-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.
"""
CEO.ca Discussion & Trending Stocks
Discover trending mining/commodity stocks and read community discussion threads.
"""
from parse_apis.ceo_ca_api import Ceoca, Post, TrendingStock, Quote
ceoca = Ceoca()
# List currently trending stocks
for stock in ceoca.trendingstocks.list(limit=5):
print(stock.symbol, stock.title, stock.quote.value, stock.quote.direction)
# Fetch popular posts across all channels
for post in ceoca.posts.popular(limit=10):
print(post.spiel_id, post.name, post.votes, post.spiel[:80])
# Read discussion thread for the gold channel
for post in ceoca.channel("gold").posts(limit=10):
print(post.timestamp, post.name, post.score, post.spiel[:60])
Fetch the most popular posts across all channels on CEO.ca. Returns posts ordered by engagement score descending. Supports time-based pagination via the until parameter — pass the timestamp of the last post to load older posts.
| Param | Type | Description |
|---|---|---|
| limit | integer | Maximum number of posts to fetch. |
| until | integer | Timestamp (milliseconds since epoch) to paginate from. Posts older than this timestamp will be returned. |
{
"type": "object",
"fields": {
"posts": "array of post objects containing spiel (content), name (author), timestamp, votes, score, parent_channel, spiel_id, and engagement metadata"
},
"sample": {
"data": {
"posts": [
{
"name": "@knowforever77",
"score": 6,
"spiel": "3600 is more likely than not",
"votes": 5,
"channel": "popular",
"featured": false,
"spiel_id": "4f23ec318fb3",
"verified": false,
"timestamp": 1781047915047,
"boost_count": 0,
"parent_channel": "sum"
}
]
},
"status": "success"
}
}About the CEO API
Endpoints and Data Coverage
The get_popular_posts endpoint returns site-wide posts ranked by engagement score in descending order. Each post object includes spiel (the post body), name (author), timestamp, votes, score, parent_channel, spiel_id, and an engagement field. Pagination is handled via the until parameter, which accepts a millisecond epoch timestamp — pass the timestamp of the last post received to page backward through older content. An optional limit parameter controls how many posts are returned per request.
Channel-Level Discussion Threads
The get_discussion_thread endpoint accepts a required channel parameter — a stock ticker such as eqx, or a named channel like gold, silver, boardroom, or index — and returns posts in reverse chronological order. Response objects carry the same core fields as popular posts (spiel, name, timestamp, votes, score, spiel_id, engagement) along with a top-level channel string confirming which channel was queried. The same until-based pagination applies.
Trending Stocks and Channel Categories
The get_trending_stocks endpoint requires no inputs and returns three collections: categories (grouped channel arrays covering commodities, crypto, and similar segments, each with an id and a channels array), all_featured (featured channels with name and type), and trending_stocks (objects carrying channel, symbol, title, a quote block with price data, and a company_details block). This endpoint is the fastest way to identify which tickers are currently generating activity on the platform.
The CEO API is a managed, monitored endpoint for ceo.ca — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ceo.ca 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 ceo.ca 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?+
- Track engagement spikes on a specific stock ticker by polling
get_discussion_threadfor risingscorevalues. - Aggregate site-wide sentiment signals using
votesandengagementfields fromget_popular_posts. - Build a watchlist of momentum tickers by parsing
symbolandquotefields fromget_trending_stocks. - Monitor named topic channels like
boardroomorgoldfor community discussion about macro themes. - Page through historical post activity on a channel using the
untiltimestamp pagination parameter. - Categorize tickers by asset class using the
categoriesarray returned byget_trending_stocks. - Identify top contributors on a channel by collecting unique
namevalues across paginated thread responses.
| 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 CEO.ca have an official developer API?+
What does the `get_trending_stocks` endpoint include in the `quote` field?+
quote block within each trending stock object contains price data for that ticker. The company_details block accompanies it with additional descriptive information about the issuer. The endpoint requires no input parameters and always returns the current trending snapshot.How does pagination work across the post endpoints?+
get_popular_posts and get_discussion_thread paginate via the until parameter, which takes a millisecond epoch timestamp. Submit the timestamp value from the oldest post in your current result set to retrieve the next page of older posts. The limit parameter caps how many posts are returned per call.Does the API expose private messages, user profiles, or account-level data from CEO.ca?+
Can I retrieve historical post archives going back years on a given channel?+
until lets you step backward through older posts on a channel, but very deep historical archives may not be fully accessible. The endpoints reflect what is currently retrievable from the public channel feed. You can fork this API on Parse and revise it to extend the pagination depth or add batch-collection logic for longer historical ranges.