sedarplus.ca APIsedarplus.ca ↗
Access SEDAR+ company profiles, public filings, reporting issuers, cease trade orders, and disciplinary records via a structured JSON API.
curl -X GET 'https://api.parse.bot/scraper/e36e248d-0f76-4830-81f5-ef5af8099599/search_profiles?query=Royal+Bank' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for issuer/company profiles by name or keyword. Returns up to 21 results matching the query term.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search keyword for company or issuer name |
{
"type": "object",
"fields": {
"data": "array of profile objects with name, profile_number, type, jurisdiction, status, and profile_id",
"status": "string indicating success"
},
"sample": {
"data": [
{
"name": "Royal Bank of Canada / Banque Royale du Canada",
"type": "Company",
"status": null,
"profile_id": "000001161",
"jurisdiction": "Québec",
"profile_number": "000001161"
}
],
"status": "success"
}
}About the sedarplus.ca API
This API exposes 6 endpoints covering SEDAR+, Canada's public capital markets filing database. Use search_profiles to look up issuers by name and retrieve profile numbers, search_documents to pull regulatory filings with download URLs, and search_cease_trade_orders to query trading restrictions — all returning structured JSON with fields like profile_id, legal_name, jurisdiction, and submitted_date.
Company Profiles and Issuer Data
The search_profiles endpoint accepts a query string and returns up to 21 matching issuer records, each containing name, profile_number, type, jurisdiction, status, and profile_id. That profile_id feeds directly into get_profile, which returns the full record for a single issuer including legal_name, date_effective, and current status. The get_reporting_issuers_list endpoint returns a paginated set of all reporting issuers with name, profile number, type, and jurisdiction — useful for building or refreshing a comprehensive issuer index.
Filing Documents
search_documents accepts an optional query string and an optional profile_id to scope results to a specific company. Each document record includes profile, document_name, submitted_date, jurisdiction, file_size, and a download_url pointing directly to the filing. This makes it straightforward to retrieve the most recent filings for a given issuer or to search across the full document corpus by keyword.
Regulatory Enforcement Records
Two enforcement endpoints cover the disciplinary and trading-restriction sides of SEDAR+. search_disciplined_list accepts an optional query and returns records where each entry's details field is an array of column values — typically name, order number, date, type, and regulator. search_cease_trade_orders follows the same shape, returning cease trade order records with columns for name, reference, date, document, type, status, and jurisdiction. Both endpoints can be called without a query to retrieve the full list, or filtered by a search term.
- Monitor new regulatory filings for a specific Canadian issuer using
search_documentsfiltered byprofile_id - Build an issuer directory by combining
get_reporting_issuers_listresults with full profiles fromget_profile - Screen counterparties for active cease trade orders before executing transactions using
search_cease_trade_orders - Flag individuals or companies under disciplinary action using
search_disciplined_listas part of a KYC workflow - Track jurisdiction and status changes for a Canadian public company by polling
get_profileover time - Aggregate filing metadata — submission dates, file sizes, jurisdictions — across multiple issuers for compliance reporting
| 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 | 250 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 SEDAR+ have an official developer API?+
What does `search_documents` return, and can I filter by company?+
profile, document_name, submitted_date, jurisdiction, file_size, and download_url. You can pass a profile_id (obtained from search_profiles) to limit results to a single issuer, or a query string to search across document titles and content. Both parameters are optional and can be combined.How are disciplinary and cease trade order records structured?+
search_disciplined_list and search_cease_trade_orders return arrays where each object contains a details field — an ordered array of column values rather than named keys. For disciplinary records the columns are typically name, order number, date, type, and regulator. For cease trade orders they include name, reference, date, document, type, status, and jurisdiction.Does the API return the actual filing document content, or just metadata?+
download_url for each document, not the parsed text content of the filing itself. Document body extraction is not currently covered. You can fork this API on Parse and revise it to add an endpoint that fetches and parses filing content from the download URL.How many results does `search_profiles` return, and is there pagination?+
search_profiles returns up to 21 matching profiles per query. Pagination controls are not currently exposed — only the first result set is returned. The get_reporting_issuers_list endpoint provides a broader paginated issuer list for cases where exhaustive coverage is needed. You can fork this API on Parse and revise it to add pagination parameters to the profile search endpoint.