ASX Announcements Scraper — Australian Company Disclosures
NexGenData · @nexgendata
ASX Announcements Scraper is a NexGenData tool that returns company announcements with ticker, headline, type and source PDF link from the Australian Securities Exchange.
About
ASX Company Announcements
ASX Announcements Scraper is a NexGenData tool that returns company announcements with ticker, headline, type and source PDF link from the Australian Securities Exchange.
ASX announcements and Australian company announcements as clean JSON — ticker, headline, type, price-sensitive flag, date and source PDF.
Use it to collect news & articles from ASX company announcements and company filings, and to track financial markets — output is company data and news (headline, type, price-sensitive flag, date, ticker, source PDF).
Monitor Australia ASX listed-company announcements. Built for analysts, researchers, fintech builders and AI agents.
Factual public data — not financial or investment advice.
📊 Sample Output
announcement_id | announcement_date | announcement_time | announcement_types | headline | scraped_at |
|---|---|---|---|---|---|
| 03139933 | 2026-09-25 | 12:13 AEST | ['Corporate Governance', 'Appendix 4G'] | Appendix 4G and 2026 Corporate Governance Statement | 2026-09-25T03:20:42Z |
| 03139932 | 2026-09-25 | 12:11 AEST | ['Structured Products Distribution'] | CitiFirst VTS Instalment MINI Dividend - Estimated | 2026-09-25T03:20:42Z |
| 03139930 | 2026-09-25 | 12:10 AEST | ['Annual Report', 'Top 20 shareholders', 'Full Year Accounts', 'Full… | Annual Report to shareholders | 2026-09-25T03:20:42Z |
| 03139931 | 2026-09-25 | 12:10 AEST | ['Annual Report', 'Top 20 shareholders', 'Full Year Accounts', 'Full… | Annual Report to shareholders | 2026-09-25T03:20:42Z |
| 03139929 | 2026-09-25 | 12:04 AEST | ["Change of Director's Interest Notice"] | Change of Director's Interest Notice - MacDonald | 2026-09-25T03:20:42Z |
| 03139928 | 2026-09-25 | 12:02 AEST | ["Change of Director's Interest Notice"] | Change of Director's Interest Notice - Williams | 2026-09-25T03:20:42Z |
Real rows from a real run (2026-09-25), unedited apart from masked emails/phones and shortened long text; fields the source does not publish are empty.
🔧 Input reference
| Field | Type | Default | What it does |
|---|---|---|---|
tickers | array | [] | ASX codes to filter on (e.g. ['BHP', 'RIO', 'CBA']). Leave empty to pull the most recent announcements across the whole market. |
marketSensitiveOnly | boolean | false | If true, only return announcements ASX has flagged as market-sensitive (price-sensitive). |
announcementType | string | "" | Free-text substring filter on announcement type (e.g. 'substantial holder', 'dividend', 'quarterly'). Case-insensitive. Leave blank for all types. |
maxResults | integer | 50 | Hard cap on the number of announcement records returned. Defaults to 50. |
🧾 JSON sample record
One real record from a real run (emails/phones masked, long text shortened):
{
"announcement_id": "03139933",
"ticker": "SVM",
"company_name": "SOVEREIGN METALS LIMITED",
"announcement_date": "2026-09-25",
"announcement_time": "12:13 AEST",
"announcement_types": [
"Corporate Governance",
"Appendix 4G"
],
"headline": "Appendix 4G and 2026 Corporate Governance Statement",
"is_market_sensitive": false,
"is_price_sensitive": false,
"num_pages": null,
"file_size_kb": 1275,
"file_url": null,
"source_url": "https://www.asx.com.au/asx/v2/statistics/announcements.do?announcementId=03139933",
"scraped_at": "2026-09-25T03:20:42Z"
}
📊 What you get
Clean JSON, one record per announcement (full output has 14 fields):
announcement_date— Announcement dateannouncement_id— Announcement idannouncement_time— Announcement timeannouncement_types— Announcement typescompany_name— Company namefile_size_kb— File size kbfile_url— File urlheadline— Headlineis_market_sensitive— Is market sensitiveis_price_sensitive— Is price sensitive
🤖 Use with AI agents
Structured JSON built for LLM and agent pipelines — point Claude, the OpenAI Agents SDK, an n8n flow or any MCP-aware client at it and pull Australia ASX listed-company announcements on demand.
Sample agent prompt:
Monitor new ASX announcements for a ticker and flag price-sensitive ones.
Run it on a schedule
ASX companies lodge announcements throughout the trading day, so run it hourly during Australian market hours if you act on price-sensitive news, or once a day after the close for research and record-keeping. Each run brings new announcements rather than updated old ones. The actor has no new-only mode, so set maxResults high enough to cover what lands between runs, and use announcement_id to drop announcements you already have. A ticker list or marketSensitiveOnly keeps each scheduled pull small and focused. Send each run's results onward with a webhook, Google Sheets, Zapier, Make or the Bytewells API.
FAQ
Why use this instead of the official ASX website?
The ASX publishes announcements free on its website, built for reading one page at a time. This actor returns them as clean JSON with ticker, company name, date and AEST time, announcement types, headline, market-sensitive and price-sensitive flags, and a link back to the announcement on the ASX site. You can filter by ticker list, type or price-sensitive flag, and run it on a schedule. It needs no API key and you pay per announcement.
What does a typical run cost?
One flat monthly price, with a free trial; there is no per-row charge. Bytewells bills compute separately from your prepaid credit, by memory and run time.
How do I get only price-sensitive ASX announcements?
Set marketSensitiveOnly to true. The run then returns only announcements ASX has flagged as market-sensitive. Each record also carries is_market_sensitive and is_price_sensitive, so you can filter further downstream.
Can I track announcements for specific ASX companies?
Yes. Put the ASX codes in tickers, for example ["BHP", "RIO", "CBA"]. Leave it empty to pull the most recent announcements across the whole market. Add announcementType with a word such as dividend, substantial holder or quarterly to keep only matching types.
Does it return the text of the announcement PDF?
No. It returns the announcement's details and a source_url to the announcement on the ASX site, plus file size where shown. It does not extract the document text, and file_url and num_pages can be empty.
Can I pull ASX announcements for a past date range?
There is no date-range input. Each run returns the most recent announcements that match your filters, up to maxResults (default 50). To build a history, run it on a schedule and keep each run's results.
How it is billed on Bytewells
One flat monthly price for this actor, with a free trial to start. There is no charge per row, per result or per run from us.
Compute is billed separately by Bytewells from your prepaid credit, by memory and run time (per second). If a run uses the platform's proxy, Bytewells adds that traffic to the same run's compute bill.
Run it from the API
Bytewells speaks the same API as Apify, so curl or apify-client work with the Bytewells address and your Bytewells API key.
curl -X POST "https://bytewells.com/api/v2/acts/nexgendata~asx-company-announcements/runs" \
-H "Authorization: Bearer YOUR_BYTEWELLS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"tickers": [], "marketSensitiveOnly": false, "announcementType": "", "maxResults": 50}'
# when the run has finished, read its rows:
curl -H "Authorization: Bearer YOUR_BYTEWELLS_API_KEY" \
"https://bytewells.com/api/v2/actor-runs/RUN_ID/dataset/items"
from apify_client import ApifyClient
client = ApifyClient("YOUR_BYTEWELLS_API_KEY", api_url="https://bytewells.com/api")
run = client.actor("nexgendata/asx-company-announcements").call(run_input={'tickers': [], 'marketSensitiveOnly': False, 'announcementType': '', 'maxResults': 50})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row)
Contact
Questions, a source that changed, or a field you need: [email protected]
Input
Preview of the input form. Rent the Actor to fill it in and start runs from the console.
Fields
tickersASX codes to filter on (e.g. ['BHP', 'RIO', 'CBA']). Leave empty to pull the most recent announcements across the whole market.
marketSensitiveOnlyIf true, only return announcements ASX has flagged as market-sensitive (price-sensitive).
announcementTypeFree-text substring filter on announcement type (e.g. 'substantial holder', 'dividend', 'quarterly'). Case-insensitive. Leave blank for all types.
maxResultsHard cap on the number of announcement records returned. Defaults to 50.
API
Bytewells speaks the Apify API. Existing integrations keep working: point apify-client at https://bytewells.com/api and use your Bytewells API token (Console → Settings → API access). The Actor ID is nexgendata/asx-company-announcements (or nexgendata~asx-company-announcements in URLs).
JavaScript · apify-client
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: process.env.BYTEWELLS_TOKEN,
baseUrl: 'https://bytewells.com/api',
});
const input = {
"tickers": [],
"marketSensitiveOnly": false,
"announcementType": "",
"maxResults": 50
};
const run = await client.actor('nexgendata/asx-company-announcements').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Python · apify-client
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["BYTEWELLS_TOKEN"], api_url="https://bytewells.com/api")
run_input = {
"tickers": [],
"marketSensitiveOnly": False,
"announcementType": "",
"maxResults": 50
}
run = client.actor("nexgendata/asx-company-announcements").call(run_input=run_input)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)HTTP · curl
curl -X POST "https://bytewells.com/api/v2/acts/nexgendata~asx-company-announcements/runs" \
-H "Authorization: Bearer $BYTEWELLS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"tickers":[],"marketSensitiveOnly":false,"announcementType":"","maxResults":50}'Runs are billed as compute from your credit balance. Paid Actors need an active rental or trial; otherwise the API answers 402 rental-required.
Related
More Actors from the same publisher.
Bilibili Video Search by Keyword · B站视频搜索 (No Login)
NexGenData · @nexgendata
Bilibili Video Search is a NexGenData tool that returns videos with BV-id, title, uploader, plays, likes and danmaku from Bilibili keyword search.
$19/mo1-day free trialDelaware Corporations Search — DE Entity Data API
NexGenData · @nexgendata
Delaware Corporations Search is a NexGenData tool that returns one row per Delaware entity from the Delaware Division of Corporations registry with entity name, file number, formation date, entity kind and type, residency, and registered agent name, address and phone.
BusinessLead generation$79/mo1-day free trialLead Enrichment — Enrich Leads with Emails, Phones & Tech
NexGenData · @nexgendata
Lead Enrichment is a NexGenData tool that returns emails, phone numbers, social profiles and tech stack per company from each company's own website.
BusinessMarketingLead generation$19/mo1-day free trialLinkedIn Jobs Scraper — No Login, by Keyword & Location
NexGenData · @nexgendata
LinkedIn Jobs Scraper is a NexGenData tool that returns job listings with title, company, salary and posting date from public LinkedIn job pages.
$29/mo3-day free trialNSE India Company Announcements Scraper
NexGenData · @nexgendata
NSE India Company Announcements Scraper is a NexGenData tool that returns corporate announcements with PDF attachment links from the National Stock Exchange of India.
$29/mo3-day free trialPR Newswire Scraper — Press Releases by Company, Topic & Date
NexGenData · @nexgendata
PR Newswire Scraper is a NexGenData tool that returns press releases with headline, summary, issuing company, dates, category, country, stock tickers, article URL and optional full body text from PR Newswire.
BusinessMarketingLead generation$49/mo3-day free trial