Credential configuration
API key, token, and cookie are uniformly recommended to be written in the repository root directory .env(refer to .env.example), and loaded by the runtime or user before execution as environment variables with the same names. Scripts still only read credentials from environment variables or explicit CLI parameters; do not write real keys into skill payloads, reports, logs, or commits.
Only use free, official, normally accessible annual report/annual accounts/periodic report sources. When encountering commercial databases, subscriptions, trial quotas, paid downloads, login walls, CAPTCHAs, protection pages, or inaccessible pages, discard them immediately and do not bypass restrictions.
When outputting, retain the company/securities code, reporting period, document title, disclosure date, PDF or detail page URL, and source name.
Workflow
- First determine the entity type: A-share/Hong Kong stock/US stock/UK company/Japanese listed company/bond issuer/Canada/Singapore/Australia.
scripts/year_report_api.pyand browser-use can be used together: scripts are suitable for structured queries, and web pages are suitable for on-site filtering, page confirmation, and downloading public PDFs.- For sources not covered by scripts or requiring interactive filtering, use browser-use to open the web pages in the table below, and use on-site search, filter announcement categories, and locate PDFs or detail pages.
- Only accept official disclosure sources; company official website IR may be used as a supplement, but cannot replace official sources.
- Ordinary non-listed Chinese enterprises usually do not have publicly available complete financial annual reports; industrial and commercial annual reports are not audited financial statements, and this skill has discarded the industrial and commercial publicity system that cannot be accessed stably.
API scripts
Script location:scripts/year_report_api.py. Depends only on the Python standard library.
python scripts/year_report_api.py cninfo "平安银行" --year 2023 --page-size 5
python scripts/year_report_api.py sec-company apple --limit 5
python scripts/year_report_api.py sec-filings --ticker AAPL --limit 5
python scripts/year_report_api.py download "https://static.cninfo.com.cn/finalpage/2024-03-15/1219306493.PDF" --output report.pdf
| Command | Free or not | Purpose |
|---|---|---|
cninfo |
Free, no key required | CNINFO A-share announcements, by default queries annual report PDFs |
sec-company / sec-filings |
Free, no key required | SEC EDGAR company CIK, 10-K/20-F/40-F annual report filings |
download |
Free public URL | Download the public PDF returned by the script |
cninfo --year indicates the reporting period year; the script will automatically check the disclosure window of the following year. To filter precisely by disclosure date, use --date-range。
Scripts only retain key-free interfaces; do not add any interface requiring an API key, token, registration/login, or subscription to scripts.
Browser-use resources
The following sources serve as free official web page entry points; use them mixed with API scripts as needed for the task.
| Scope | Resource | URL | Key usage points |
|---|---|---|---|
| A-share full market | CNINFO | https://www.cninfo.com.cn/new/index?lang=zh | Search company name/securities code, filter "Annual Report" |
| Shanghai-listed companies | Shanghai Stock Exchange periodic reports | https://www.sse.com.cn/disclosure/listedinfo/regular/ | Filter by securities code, year, and periodic report |
| Shenzhen-listed companies | Shenzhen Stock Exchange listed company announcements | https://www.szse.cn/www/disclosure/notice/company/ | Filter by company, announcement type, and time |
| Beijing Stock Exchange-listed companies | Beijing Stock Exchange information disclosure | https://www.bse.cn/disclosure/announcement.html | Search annual reports/periodic reports |
| Hong Kong stocks | HKEXnews Predefined Documents | https://www1.hkexnews.hk/search/predefineddoc.xhtml | Select Annual Report / Environmental, Social and Governance Information |
| Chinese bond issuers | ChinaMoney bond information disclosure | https://www.chinamoney.org.cn/chinese/zqfx/ | Search issuer annual reports, audit reports, and tracking ratings |
| Chinese bond issuers | Shanghai Clearing House | https://www.shclearing.com.cn/ | Search issuer annual reports/audit reports |
| Chinese bond issuers | Shanghai Stock Exchange bond information disclosure | https://bond.sse.com.cn/disclosure/ | Search bond issuer annual reports |
| UK company accounts | Companies House webpage | https://find-and-update.company-information.service.gov.uk/ | When there is no API key, check filing history / accounts |
| Canadian listed companies | SEDAR+ Documents Search | https://www.sedarplus.ca/csa-party/service/create.html?_locale=en&service=searchDocuments&targetAppCode=csa-party | Select Documents, search by issuer/profile and annual filings |
| Singapore listed companies | SGX Company Announcements | https://www.sgx.com/securities/company-announcements | Search Annual Report or company code |
| Australian listed companies | ASX Announcements | https://www.asx.com.au/markets/trade-our-cash-market/announcements | Search by ASX code and announcement type |
Discarded
| Resource | Reason |
|---|---|
National Enterprise Credit Information Publicity System https://www.gsxt.gov.cn/ |
Related to business registration annual reports, but access is blocked, so it is not used as a stable free source |
| State Administration for Market Regulation explanation page | It is only a policy explanation, not an annual report search entry point |
| Companies House API、EDINET API | Requires an API key, so it is not written into the script |
| Any commercial database or paid API | Does not meet the requirements for a free official source |
Output specification
When a PDF can be located, provide the PDF; when there is no PDF, provide the official detail page. Explain the differences in report types: business registration annual reports, listed company annual reports, SEC 10-K/20-F/40-F, Companies House accounts, and bond issuer annual reports are not the same disclosure basis.