Canny Scraper helps you collect structured feedback data from public Canny instances, including boards, roadmaps, and feature requests. It simplifies access to product feedback so teams can analyze ideas, priorities, and user sentiment in one place.
Created by Bitbash, built to showcase our approach to Scraping and Automation!
If you are looking for canny you've just found your team — Let’s Chat. 👆👆
This project extracts publicly available feedback data from Canny-powered product portals. It solves the problem of manually browsing boards and roadmaps by turning them into clean, usable datasets. It’s built for product managers, developers, and analysts who want fast insight into user feedback.
- Works with any valid public Canny subdomain
- Supports boards, roadmap items, and unplanned feature requests
- Returns structured, machine-readable data
- Designed for automation and repeatable runs
- Handles pagination through configurable limits
| Feature | Description |
|---|---|
| Board Discovery | Retrieves all available feedback boards from a Canny instance. |
| Roadmap Extraction | Collects feature requests that are currently planned or in progress. |
| Feature Requests Export | Gathers both planned and unplanned feature requests. |
| Pagination Control | Limits or expands data volume through configurable page settings. |
| Raw Data Output | Returns clean, unmodified data ready for further processing. |
| Field Name | Field Description |
|---|---|
| board_id | Unique identifier of the feedback board. |
| board_name | Name of the board where feedback is posted. |
| feature_id | Unique identifier of the feature request. |
| title | Title of the feature request. |
| description | Detailed description provided by users. |
| status | Current state such as planned, in progress, or unplanned. |
| vote_count | Number of votes received from users. |
| comment_count | Total comments on the feature request. |
| url | Direct link to the feature or board page. |
| created_at | Timestamp when the item was created. |
| updated_at | Timestamp of the most recent update. |
[
{
"board_name": "Feature Requests",
"feature_id": "fr_10291",
"title": "Dark mode support",
"status": "planned",
"vote_count": 184,
"comment_count": 27,
"url": "https://example.canny.io/feature-requests/p/dark-mode",
"created_at": "2024-01-12T10:42:00Z",
"updated_at": "2024-03-05T14:18:00Z"
}
]
Canny/
├── src/
│ ├── main.py
│ ├── collectors/
│ │ ├── boards_collector.py
│ │ ├── roadmap_collector.py
│ │ └── features_collector.py
│ ├── utils/
│ │ ├── http_client.py
│ │ └── pagination.py
│ └── config/
│ └── settings.example.json
├── data/
│ ├── samples/
│ │ └── example_output.json
│ └── cache/
├── requirements.txt
└── README.md
- Product managers use it to review feature demand, so they can prioritize roadmaps with real data.
- Startup founders use it to monitor user feedback, so they can validate product direction.
- Developers use it to sync feedback into internal tools, so insights stay centralized.
- Analysts use it to study trends over time, so patterns in user needs become visible.
Does this work with private Canny boards? No. The tool only works with publicly accessible Canny instances and content that does not require authentication.
How do I control the amount of data collected? Pagination limits can be adjusted through configuration to control how many pages and items are retrieved.
Is proxy usage required? Using a proxy is strongly recommended for stability, especially when collecting larger datasets.
What format is the output in? All results are returned as structured JSON, making them easy to store, analyze, or transform.
Primary Metric: Average processing speed of 120–180 feature requests per minute on standard connections.
Reliability Metric: Over 99 percent successful request completion on public Canny instances.
Efficiency Metric: Low memory footprint, typically under 150 MB during extended runs.
Quality Metric: High data completeness, consistently capturing all visible fields across boards and roadmap items.
