ASX APIasx.com ↗
Search ASX market announcements by company code, date range, and report type. Returns filing date, document type, and direct PDF URL for annual and half-yearly reports.
What is the ASX API?
The ASX API provides access to market announcements filed on the Australian Securities Exchange through a single endpoint, search_announcements, returning up to 10 response fields per result including company code, filing date, document type, and a direct PDF URL. It covers approximately 20 years of annual report and half-yearly earnings filings, filterable by ASX ticker, date range, and report type with pagination support up to 100 results per page.
curl -X GET 'https://api.parse.bot/scraper/cea273c0-12fa-4276-a0fc-39dd57dfce34/search_announcements?end_date=2026-08-14&start_date=2025-08-14&report_type=annual_report&company_code=BHP' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace asx-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: ASX Announcements API — search filings, filter by company and type."""
from parse_apis.asx_com_api import Asx, ReportType, CompanyNotFound
client = Asx()
# Browse recent annual reports across all companies.
for ann in client.announcements.search(report_type=ReportType.ANNUAL_REPORT, limit=5):
print(ann.company_code, ann.title, ann.filing_date)
# Drill into a specific company's half-yearly reports.
try:
report = client.announcements.search(
company_code="CBA",
report_type=ReportType.HALF_YEARLY_REPORT,
limit=1,
).first()
except CompanyNotFound:
report = None
print("Company not found on ASX")
if report is not None:
print(report.company_name, report.document_type)
print("PDF:", report.pdf_url)
print("Price sensitive:", report.is_price_sensitive, "| Size:", report.file_size)
print("exercised: announcements.search (all + filtered)")
Search ASX market announcements filtered by report type (annual report or half-yearly/earnings report), company code, and date range. Returns paginated results ordered by most recent filing date. Each result includes the announcement title, company code, filing date, document type classification, and a direct URL to the PDF document. When no company_code is provided, returns announcements across all listed companies. When no report_type is specified, returns both annual reports and half-yearly reports. Pagination is controlled by page and page_size parameters.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-indexed). |
| end_date | string | End of date range filter in ISO format YYYY-MM-DD. |
| page_size | integer | Number of results per page. Maximum 100. |
| start_date | string | Start of date range filter in ISO format YYYY-MM-DD. The ASX archive covers approximately the last 20 years of filings. |
| report_type | string | Type of report to search for. When omitted, returns both annual reports and half-yearly reports. |
| company_code | string | ASX company ticker code (e.g. BHP, CBA, RIO). Filters results to a single company. When omitted, returns announcements for all companies. |
{
"type": "object",
"fields": {
"page": "integer current page number",
"results": "array of announcement objects, each containing title, company_code, company_name, filing_date, document_type, pdf_url, is_price_sensitive, and file_size",
"has_more": "boolean indicating if more pages are available",
"page_size": "integer results per page",
"total_count": "integer total matching announcements (capped at 10000 by upstream)"
},
"sample": {
"data": {
"page": 1,
"results": [
{
"title": "BHP Appendix 4E and 2025 Annual Report",
"pdf_url": "https://cdn-api.markitdigital.com/apiman-gateway/ASX/asx-research/1.0/file/2924-02980020-3A673734",
"file_size": "14090KB",
"filing_date": "2025-08-18",
"company_code": "BHP",
"company_name": "BHP GROUP LIMITED",
"document_type": "Dividend Reinvestment Plan, Annual Report, Top 20 shareholders, Preliminary Final Report, Full Year Accounts, Full Year Audit Review, Full Year Directors' Statement, Full Year Directors' Report, Dividend Record Date, Dividend Pay Date, Dividend Rate",
"is_price_sensitive": true
}
],
"has_more": true,
"page_size": 5,
"total_count": 46
},
"status": "success"
}
}About the ASX API
What the API Returns
The search_announcements endpoint queries ASX filing records and returns paginated announcement objects. Each object includes title, company_code, company_name, filing_date, document_type, pdf_url, and is_price_sensitive. Results are ordered by most recent filing date and the total_count field reports the total number of matching records (capped at 10,000).
Filtering and Pagination
Results can be narrowed using company_code (e.g. BHP, CBA, RIO) to target a single listed company, or left unset to retrieve filings across all ASX-listed entities. The report_type parameter accepts values for annual reports or half-yearly/earnings reports; omitting it returns both types. Date filtering uses start_date and end_date in ISO YYYY-MM-DD format, covering the archive's roughly 20-year historical depth. Pagination is controlled via page (1-indexed) and page_size (maximum 100).
Coverage and Data Notes
The pdf_url field provides a direct link to the filing document, making it straightforward to fetch the underlying report for further processing. The is_price_sensitive flag indicates whether ASX classified the announcement as market-sensitive. Coverage is limited to annual reports and half-yearly/earnings reports — other announcement categories such as AGM notices, investor presentations, or continuous disclosure notices are not included in the current endpoint.
The ASX API is a managed, monitored endpoint for asx.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when asx.com 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 asx.com 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?+
- Track all annual report filings for a portfolio of ASX-listed companies using company_code filtering
- Build an earnings calendar by querying half-yearly reports within a specific date range
- Automate PDF downloads of financial statements using the pdf_url field returned per filing
- Screen for price-sensitive earnings announcements using the is_price_sensitive flag
- Compile historical filing timelines for a company across the 20-year archive
- Compare filing cadence across multiple ASX companies by aggregating results without a company_code filter
- Identify the most recently filed annual reports across the full exchange using default sorting by filing_date
| 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 ASX offer an official developer API?+
How does pagination work, and is there a limit on results?+
search_announcements endpoint uses 1-indexed page numbers via the page parameter. Each page returns up to 100 results when page_size is set to its maximum. The has_more boolean indicates whether additional pages exist. The total_count field reflects the total matching records but is capped at 10,000 regardless of how many filings actually match.Does the API cover announcement types beyond annual and half-yearly reports?+
Can I retrieve real-time or intraday share price data alongside filings?+
How far back does the filing archive go, and are older filings complete?+
start_date parameter documentation. Coverage for older filings depends on what ASX retains in its public records — completeness may vary for filings at the outer edge of that range.