# CEO.ca — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Monitor trending stocks, browse popular discussion posts, and read full conversation threads from CEO.ca to stay informed on market discussions and investment opportunities. Get real-time insights into what's being talked about and what stocks are gaining traction on the platform.

**Category:** Finance & Markets | **Website:** [ceo.ca/](https://ceo.ca/) | **Docs:** [parse.bot/marketplace/5f294198-b72e-4e23-824c-c5ccec0ef5a8/ceo-ca-api](https://parse.bot/marketplace/5f294198-b72e-4e23-824c-c5ccec0ef5a8/ceo-ca-api)

Pay-per-use API proxy. Each call is automatically billed to your wallet in USDC.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/parse-ceo-ca-api-5f294198/`
**Auth:** `Authorization: Bearer <LOCUS_API_KEY>`

## Endpoints

### get_discussion_thread

Fetch the discussion thread for a specific stock channel (ticker) or topic. Returns posts in reverse chronological order. Supports time-based pagination via the until parameter — pass the timestamp of the last post to load older posts.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `channel` | string | Yes | The stock ticker or channel name (e.g. 'gold', 'silver', 'index', 'boardroom', or a company ticker like 'eqx'). |
| `limit` | integer | No | Maximum number of posts to fetch. |
| `until` | integer | No | Timestamp (milliseconds since epoch) to paginate from. Posts older than this timestamp will be returned. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-ceo-ca-api-5f294198/get_discussion_thread \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"channel":"<string>","limit":"<integer>","until":"<integer>"}'
```

### get_popular_posts

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.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `limit` | integer | No | Maximum number of posts to fetch. |
| `until` | integer | No | Timestamp (milliseconds since epoch) to paginate from. Posts older than this timestamp will be returned. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-ceo-ca-api-5f294198/get_popular_posts \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"limit":"<integer>","until":"<integer>"}'
```

### get_stock_news

Fetch recent CEO.ca newsfeed articles for a specific stock channel. Extracts news and featured articles embedded in the channel's data response (no extra upstream request per article). Returns structured article metadata including title, publication timestamp, source/publisher, canonical URL, and tags. Articles are deduplicated by slug, filtered to the requested lookback window, and sorted newest first. The upstream source provides up to 8 articles (4 news + 4 featured); news_window_complete indicates whether the lookback window is fully covered by available data.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `channel` | string | Yes | The stock ticker or channel name (e.g. 'mog', 'eqx', 'big'). |
| `news_limit` | integer | No | Maximum number of news articles to return. Must be between 1 and 25. |
| `news_lookback_days` | integer | No | Number of days to look back for news articles. Must be between 1 and 30. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-ceo-ca-api-5f294198/get_stock_news \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"channel":"<string>","news_limit":"<integer>","news_lookback_days":"<integer>"}'
```

### get_stock_snapshot

Fetch a combined snapshot of a stock channel's current trading volume, latest discussion comments, and recent CEO.ca news articles in a single Parse API request. Volume metrics come from the channel's quote data. Comments use the same upstream discussion-thread source. News is extracted from the embedded articles in the same upstream response (no extra request for the news list). When include_comments or include_news is false, the respective section is skipped. Returns upstream_error when the channel has no quote data (e.g. non-company topic channels or non-existent tickers).

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `channel` | string | Yes | The stock ticker or channel name (e.g. 'mog', 'eqx', 'big'). |
| `comment_limit` | integer | No | Maximum number of discussion comments to return. Must be between 1 and 25. |
| `include_comments` | boolean | No | When false, skip fetching comments and return only volume and news data. |
| `include_news` | boolean | No | When false, skip news extraction and return only volume and comments data. |
| `news_limit` | integer | No | Maximum number of news articles to return. Must be between 1 and 25. |
| `news_lookback_days` | integer | No | Number of days to look back for news articles. Must be between 1 and 30. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-ceo-ca-api-5f294198/get_stock_snapshot \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"channel":"<string>","comment_limit":"<integer>","include_comments":"<boolean>","include_news":"<boolean>","news_limit":"<integer>","news_lookback_days":"<integer>"}'
```

### get_stock_volume

Fetch the current trading volume and average volume for a specific stock channel on CEO.ca. Makes one request to the channel's data endpoint and extracts quote-level volume metrics. Returns upstream_error when the channel has no quote data (e.g. non-company topic channels or non-existent tickers).

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `channel` | string | Yes | The stock ticker or channel name (e.g. 'mog', 'eqx', 'big'). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-ceo-ca-api-5f294198/get_stock_volume \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"channel":"<string>"}'
```

### get_trending_stocks

Fetch currently trending stocks, featured channels, and channel categories (commodities, crypto, etc.) from CEO.ca. Accepts limit and page parameters for paginating the trending stocks list. Returns the current snapshot of trending activity with pagination metadata.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `limit` | integer | No | Maximum number of trending stocks to return per page. |
| `page` | integer | No | Page number for paginating through trending stocks (1-based). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-ceo-ca-api-5f294198/get_trending_stocks \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"limit":"<integer>","page":"<integer>"}'
```

### get_volume_anomalies

Fetch CEO.ca's company list sorted by volume anomaly (highest volume-to-average ratio first). Makes one upstream request per 50-item source page. Returns ticker, channel, company name, exchange, current session volume, average volume, volume ratio, last price, and quote timestamp. Supports limit (1–100, default 25) and page (1-based) parameters for pagination. Returns freshness metadata (fetched_at timestamp) and has_more/total_available for continuation. Non-company channels or tickers without quote data may have null fields. Outside market hours, the anomalies array may be empty.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `limit` | integer | No | Maximum number of volume anomaly records to return per page. Must be between 1 and 100. |
| `page` | integer | No | Page number for pagination (1-based). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-ceo-ca-api-5f294198/get_volume_anomalies \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"limit":"<integer>","page":"<integer>"}'
```
