Blog Posts
Public read-only endpoints for querying stored blog posts.
Blog Posts
List Blog Posts
GET /api/v1/blog-posts/
Auth: API key or logged-in browser session required.
Returns stored blog posts and analysis metadata. Response bodies exclude full post text by default.
Query parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
company_slug |
string | - | Filter by company slug |
has_summary |
string | - | Filter by summary status: true, false, or empty |
weeks |
integer | - | Include posts published in the last N weeks |
months |
integer | - | Include posts published in the last N months |
days |
integer | - | Include posts published in the last N days |
include_text |
boolean | false |
Include full stored text in each result |
limit |
integer | 50 |
Number of results to return, max 500 |
offset |
integer | 0 |
Result offset |
random |
boolean | false |
Return results in random order |
order_by |
string | -date_published |
One of date_parsed, -date_parsed, date_published, -date_published |
Response:
{
"total_count": 1234,
"limit": 50,
"offset": 0,
"text_included": false,
"results": [
{
"id": 1,
"title": "Announcing Our New Feature",
"slug": "announcing-our-new-feature",
"source_url": "https://example.com/blog/new-feature",
"author": "Jane Doe",
"date_published": "2025-01-15",
"date_parsed": "2025-01-16",
"word_count": 1200,
"summary": "A brief summary of the post.",
"company_name": "Example Inc.",
"company_slug": "example",
"has_summary": true,
"reading_time_minutes": 6,
"is_removed": false,
"text_available": true,
"text_length": 8400
}
]
}
Blog Post Company Activity
GET /api/v1/blog-posts/company-activity/
Auth: API key or logged-in browser session required.
Counts distinct companies with stored posts published in a recent lookback window. Blog publication timestamps are stored as dates, so this endpoint reports the calendar date window used for the count.
Query parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
window_hours |
integer | 48 |
Requested lookback window in hours, max 8760 |
company_slug |
string | - | Optional company slug filter |
limit |
integer | 50 |
Number of company rows to return, max 500 |
offset |
integer | 0 |
Result offset |
Response:
{
"company_count": 12,
"post_count": 18,
"window_hours_requested": 48,
"window_days_used": 2,
"calendar_days_included": 3,
"start_date": "2026-06-01",
"end_date": "2026-06-03",
"date_field": "date_published",
"date_granularity": "day",
"limit": 50,
"offset": 0,
"results": [
{
"company_name": "Example Inc.",
"company_slug": "example",
"post_count": 2,
"latest_post_date": "2026-06-03"
}
]
}
Blog Output Leaderboard
GET /api/v1/leaderboard/blog-output/
Auth: API key or logged-in browser session required.
Returns companies ranked by stored blog output.
Query parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
founded_after |
integer | - | Filter by founding year |
stage |
string | - | Filter by current_stage; use public for public companies |
min_posts |
integer | - | Minimum posts in the current year |
min_words |
integer | - | Minimum all-time stored words |
sort |
string | posts_current_year |
One of posts_current_year, posts_all_time, total_words, avg_posts_per_month |
Response:
{
"count": 50,
"results": [
{
"company_name": "Example Inc.",
"company_slug": "example",
"current_stage": "series-b",
"year_founded": 2018,
"posts_current_year": 42,
"posts_all_time": 180,
"total_words": 240000,
"avg_posts_per_month": 4.5
}
]
}