Sedarplus APIsedarplus.ca ↗
Access Canadian public filings, issuer profiles, cease trade orders, and disciplinary records from SEDAR+ via a structured JSON API with 7 endpoints.
What is the Sedarplus API?
The SEDAR+ API exposes 7 endpoints covering Canadian public capital markets regulatory data, including issuer profiles, financial disclosure filings, cease trade orders, and disciplinary records. The search_documents endpoint lets you filter filings by issuer profile number or document type and returns direct download URLs for each filing. Profile lookups, reporting issuer lists, and date-range financial disclosure queries round out the coverage.
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 on the SEDAR+ platform. Returns up to 21 matching profiles with name, profile number, type, and jurisdiction. Profile numbers can be used with get_profile for full details.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search keyword for company or issuer name |
{
"type": "object",
"fields": {
"items": "array of profile objects with name, profile_number, type, jurisdiction, status, and profile_id"
},
"sample": {
"data": {
"items": [
{
"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 API
Issuer Profiles and Document Search
The search_profiles endpoint accepts a free-text query and returns up to 21 matching issuer or company records, each with name, profile_number, type, jurisdiction, and status. The profile_number from those results feeds directly into get_profile, which returns the full record including legal_name, date_effective, and principal jurisdiction. This two-step lookup mirrors how SEDAR+ organizes issuers and gives you a stable identifier for downstream filing queries.
The search_documents endpoint accepts an optional query, an optional profile_id (the profile_number from profile search), and an optional document_type filter. Results include document_name, submitted_date, jurisdiction, file_size, and a download_url pointing to the actual filing. When profile_id is supplied, results are scoped to that issuer only; document_type takes precedence over query for type-based filtering.
Financial Disclosures by Date Range
search_financial_disclosure_range requires start_date and end_date in YYYY-MM-DD format. The date window is capped by max_days (1–31, default behavior applies when omitted). Pagination is controlled via page and page_size (clamped to 1–500 items). Each item in the response carries a precise submitted timestamp with seconds and timezone, a detected language field (English, French, or null), and file metadata. The response envelope includes has_more, next_page, total_results, partial (true if some page fetches failed), and errors for transparent error reporting.
Regulatory Enforcement Data
search_disciplined_list and search_cease_trade_orders expose enforcement records maintained on SEDAR+. The disciplined list returns entity name with profile number, order number, date, type (Organization or Individual), and regulator code. Cease trade order records include ban_notes, reference_number, date, document_name, ban_type, status, jurisdiction, and additional notes. Both endpoints accept an optional query to filter by entity name or keyword; omitting the query returns recent or all available records. The get_reporting_issuers_list endpoint requires no inputs and pages through registered reporting issuers with name, profile number, type, jurisdiction, and status.
The Sedarplus API is a managed, monitored endpoint for sedarplus.ca — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when sedarplus.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 sedarplus.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?+
- Monitor cease trade orders for specific Canadian securities issuers by querying
search_cease_trade_orderswith a company name. - Build a filing alert system using
search_financial_disclosure_rangewith rolling daily date windows to catch new submissions. - Resolve a company name to a stable
profile_numberviasearch_profiles, then retrieve all its filed documents withsearch_documents. - Screen for entities under regulatory discipline by querying
search_disciplined_listand filtering by organization type. - Compile a list of active reporting issuers in a specific jurisdiction using
get_reporting_issuers_listand filtering on thejurisdictionfield. - Download a targeted set of financial disclosures by combining
document_typeand a narrowstart_date/end_datewindow insearch_financial_disclosure_range. - Cross-reference a company's legal name and effective date from
get_profilewith its public filing history fromsearch_documents.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. 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_financial_disclosure_range` return, and how does its pagination work?+
document_name, precise submitted timestamp (including seconds and timezone), jurisdiction, file_size, and a detected language (English, French, or null) — for disclosures within the supplied start_date / end_date window. Pagination is deterministic: supply page (1-based) and page_size (1–500). The response includes has_more, next_page, total_results, partial, and an errors array so you can detect and retry any failed upstream page fetches.How are cease trade orders different from disciplinary records?+
search_cease_trade_orders returns trading restriction records with fields like ban_notes, ban_type, status, and jurisdiction — focused on securities trading prohibitions. search_disciplined_list covers broader regulatory disciplinary actions and returns order_number, date, entity type (Organization or Individual), and regulator_code. The two lists are maintained separately on SEDAR+ and serve different compliance use cases.Does the API expose the full text or parsed content of filed PDF documents?+
download_url for each document; it does not parse or extract text from the underlying PDFs. You can fork the API on Parse and revise it to add a document-parsing step against the download URLs.Is historical filing data available beyond what a single `search_documents` query returns?+
search_documents returns up to the results available for a given query or profile_id but does not expose explicit pagination controls. For time-bounded bulk retrieval of financial disclosures specifically, search_financial_disclosure_range supports paginated access up to 500 items per page across a configurable date window. Bulk historical export across all document types is not currently covered; you can fork the API on Parse and revise it to add paginated historical sweeps.