Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
cleanexpo avatar

Ato Rate Scraping

  • 10 installs
  • 6 repo stars
  • Updated July 16, 2026
  • cleanexpo/ato

Scrapes current Australian tax rates and thresholds from ATO.gov.au sources using the Jina AI Reader API with provenance tracking.

About

Extracts current tax rates, thresholds, and benchmarks from official ATO sources into structured data. A developer uses it when validating or updating cached Australian tax rates for a new period.

  • Uses Jina AI Reader API to parse ATO pages
  • Tracks rate provenance and detects rate changes

Ato Rate Scraping by the numbers

  • 10 all-time installs (skills.sh)
  • Ranked #1,485 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
npx skills add https://github.com/cleanexpo/ato --skill ato-rate-scraping

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs10
repo stars6
Last updatedJuly 16, 2026
Repositorycleanexpo/ato

What it does

Scrapes current Australian tax rates and thresholds from ATO.gov.au sources using the Jina AI Reader API with provenance tracking.

Files

SKILL.mdMarkdownGitHub ↗

ATO Rate Scraping Skill

Extracts current tax rates, thresholds, and benchmarks from official Australian government sources. Uses Jina AI Reader API to convert ATO web pages into structured rate data with full provenance tracking.

When to Use

  • Validating that cached tax rates match current ATO publications
  • Detecting quarterly fuel tax credit rate changes
  • Confirming annual rate updates (Div 7A benchmark, SG rate, FBT rates)
  • Verifying IAWO threshold after federal budget announcements
  • Populating rate tables for new financial years
  • Cross-checking rate fallback values in analysis engines

Scraping Method

Use the Jina AI Reader API to fetch and parse ATO pages:

curl "https://r.jina.ai/https://www.ato.gov.au/[rate-page-path]" \
  -H "Authorization: Bearer $JINA_API_KEY"

The Jina Reader converts pages to clean markdown, stripping navigation and ads. Rate tables are preserved as markdown tables for structured extraction.

Rate Source Registry

Primary Sources

RateSource URLUpdate ScheduleExtraction Pattern
Individual Tax Bracketsato.gov.au/tax-rates-and-codes/tax-rates-australian-residentsAnnual (1 Jul)Table: Taxable income / Tax on this income
Corporate Tax Rateato.gov.au/businesses-and-organisations/income-deductions-and-concessions/income-tax-rateAnnual (Budget)Paragraph: "The full company tax rate is..."
Division 7A BenchmarkATO Tax Determinations (annual)Annual (before 1 Jul)TD title: "Income tax: Division 7A benchmark interest rate"
Fuel Tax Creditsato.gov.au/businesses-and-organisations/income-deductions-and-concessions/incentives-and-concessions/fuel-schemes/fuel-tax-credits-business/rates-all-fuelsQuarterlyTable: Fuel type / Rate per litre / Period
SG Rateato.gov.au/businesses-and-organisations/super-for-employers/how-much-to-payAnnual (legislated)Table: Period / SG rate percentage
FBT Rate & Gross-Upato.gov.au/businesses-and-organisations/fringe-benefits-taxAnnual (1 Apr)Table: FBT year / Rate / Type 1 / Type 2
IAWO Thresholdato.gov.au/businesses-and-organisations/income-deductions-and-concessions/depreciation-and-capital-expenses-and-allowances/simpler-depreciation-for-small-businessBudget announcementParagraph: "instant asset write-off threshold"
Medicare Levyato.gov.au/individuals-and-families/medicare-and-private-health-insurance/medicare-levyAnnual (Budget)Paragraph: "Medicare levy is..."

Secondary Sources

RateSource
R&D Tax Offset Ratesbusiness.gov.au/grants-and-programs/research-and-development-tax-incentive
Payroll Tax ThresholdsState revenue office websites (per-state)
CGT Discountato.gov.au/individuals-and-families/investments-and-assets/capital-gains-tax/cgt-discount

Extraction Process

1. Fetch page via Jina AI Reader API 2. Locate rate table by searching for known headers (e.g., "Taxable income", "Rate per litre") 3. Parse markdown table into structured key-value pairs 4. Validate extracted values against expected ranges:

  • Tax rates: 0-100%
  • Dollar thresholds: > 0
  • Interest rates: 0-20%
  • Fuel credit rates: $0.00-$1.00 per litre

5. Compare against cached values in lib/tax-data/cache-manager.ts 6. Record provenance: source URL, extraction timestamp, financial year, effective date

Validation Rules

Rate TypeExpected RangeRed Flag If
Corporate Tax Rate25-30%< 20% or > 35%
R&D Offset35-50%< 30% or > 55%
Div 7A Benchmark4-12%< 2% or > 15%
SG Rate9-15%< 9% or > 15%
FBT Rate45-50%< 40% or > 55%
Fuel Credit (per litre)$0.05-$0.80< $0.01 or > $1.00
IAWO Threshold$1,000-$200,000< $1,000 or > $500,000
Medicare Levy1-3%< 1% or > 5%

Values outside expected ranges should be flagged for manual verification before cache update.

Output Format

<rate_scrape_result>
  <source_url>https://www.ato.gov.au/businesses-and-organisations/super-for-employers/how-much-to-pay</source_url>
  <scraped_at>2026-02-13T10:30:00+11:00</scraped_at>
  <scrape_method>jina_ai_reader</scrape_method>
  <rates_extracted>
    <rate>
      <name>Superannuation Guarantee Rate</name>
      <value>0.12</value>
      <display_value>12%</display_value>
      <effective_from>2025-07-01</effective_from>
      <effective_to>2026-06-30</effective_to>
      <financial_year>FY2025-26</financial_year>
      <legislation>SGAA 1992, s 19</legislation>
      <confidence>high</confidence>
    </rate>
  </rates_extracted>
  <validation>
    <in_expected_range>true</in_expected_range>
    <changed_from_cache>true</changed_from_cache>
    <previous_cached_value>0.115</previous_cached_value>
  </validation>
</rate_scrape_result>

Best Practices

  • Always verify extracted rates against expected ranges before updating cache
  • Never auto-update rates that fall outside expected ranges — flag for manual review
  • Log every scrape with full provenance for audit trail (AD-5)
  • Respect rate limits on ATO.gov.au — maximum 1 request per 10 seconds
  • Cache Jina responses for 15 minutes to avoid redundant scrapes
  • FY attribution is mandatory — every rate must specify which financial year it applies to
  • Fallback values must remain in engine code for resilience — scraping augments, not replaces

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.