publicdataau publicdata.au on GitHub
Published by Taronga Conservation Society Australia under CC BY 4.0 and republished here without change to the content. Taronga Conservation Society Australia has not endorsed this site.An independent republication of open government data. No government agency has endorsed it. Read more

Australian Shark-Incident Database

live
Publisher Taronga Conservation Society AustraliaUpdated yearlyLicence CC BY 4.0Latest 2026-09-03As at 2 September 2026Rows 1,306Fields 71

The public version of the Australian Shark-Incident Database, one row per incident from 1791, maintained by Taronga Conservation Society Australia with Flinders University and the NSW Department of Primary Industries. Each row records the month and year, injury outcome, state, location and coordinates, site category, shark species and length, whether provoked, the victim's activity, injury location and severity, gender and age, clothing and equipment, the time, depth, distance to shore, water and weather conditions, and the source of the record.

Also called: Australian Shark Attack File, Shark attack database Australia, Shark attacks by year and state, ASID Taronga.

Before you use it
What is an incident?
Any recorded interaction in Australian waters where a shark bit or attempted to bite a person, or a person's equipment with the person present, from 1791 to today, with the outcome, location, activity, species and the conditions where they are known. The database is maintained by Taronga with Flinders University and the NSW Department of Primary Industries, and grew out of the Australian Shark Attack File kept since 1984.
Why are so many cells blank?
The record for an old incident may hold no more than a date, a place and an outcome, and even recent records are compiled from reports that vary in detail. A blank cell means the detail was not recorded.
Where does the file come from?
The database is published on Zenodo under CC BY 4.0, with a new version roughly twice a year. Each version here follows the newest Zenodo version of the concept record, and its DOI is in the provenance.
1,293 incidents drawn in 638 cells of 0.05 degrees, the fullest with 23.
Incidents counted in cells of 0.05 degrees. State outlines from the ABS Australian Statistical Geography Standard 2021, CC BY 4.0.
1,306incidents
1803 to 2025years drawn
71fields
12formats
1version
0102030401803 unprovoked: 11807 unprovoked: 11820 provoked: 11825 unprovoked: 11830 unprovoked: 11832 provoked: 21836 unprovoked: 31837 unprovoked: 11839 provoked: 11840 unprovoked: 11841 unprovoked: 11847 unprovoked: 21849 provoked: 11849 unprovoked: 21850 unprovoked: 21853 provoked: 11855 unprovoked: 41856 unprovoked: 218561858 unprovoked: 11860 unprovoked: 11861 unprovoked: 11862 unprovoked: 21863 provoked: 11863 unprovoked: 31865 unprovoked: 11868 unprovoked: 11869 provoked: 11869 unprovoked: 11870 provoked: 11870 unprovoked: 11872 unprovoked: 11873 unprovoked: 11874 provoked: 11874 unprovoked: 21875 provoked: 21875 unprovoked: 21876 provoked: 31876 unprovoked: 31877 provoked: 11877 unprovoked: 41878 provoked: 21878 unprovoked: 21879 unprovoked: 21880 unprovoked: 41881 provoked: 11881 unprovoked: 41882 provoked: 31882 unprovoked: 21883 provoked: 11883 unprovoked: 21884 unprovoked: 11885 unprovoked: 218851886 unprovoked: 21887 unprovoked: 21888 provoked: 11888 unprovoked: 11889 unprovoked: 11890 unprovoked: 11891 provoked: 21892 provoked: 11892 unprovoked: 31893 provoked: 11893 unprovoked: 21894 unprovoked: 11895 provoked: 31895 unprovoked: 41896 unprovoked: 21897 unprovoked: 21898 provoked: 21899 unprovoked: 21900 provoked: 11900 unprovoked: 41901 provoked: 31901 unprovoked: 31902 provoked: 11902 unprovoked: 11903 provoked: 21903 unprovoked: 21904 unprovoked: 11905 provoked: 11905 unprovoked: 11906 provoked: 11906 unprovoked: 31907 provoked: 11907 unprovoked: 31909 unprovoked: 119091910 unprovoked: 41911 provoked: 11911 unprovoked: 21912 provoked: 21912 unprovoked: 51913 provoked: 31913 unprovoked: 21914 provoked: 31914 unprovoked: 51915 unprovoked: 41916 provoked: 31916 unprovoked: 51917 provoked: 11917 unprovoked: 11918 provoked: 41918 unprovoked: 41919 provoked: 11919 unprovoked: 41920 provoked: 41920 unprovoked: 51921 provoked: 11921 unprovoked: 41922 unprovoked: 51923 provoked: 71923 unprovoked: 41924 unprovoked: 51925 unprovoked: 31926 provoked: 21926 unprovoked: 21927 provoked: 41927 unprovoked: 41928 provoked: 41928 unprovoked: 41929 provoked: 71929 unprovoked: 161930 provoked: 31930 unprovoked: 41931 provoked: 51931 unprovoked: 11932 provoked: 31932 unprovoked: 519321933 provoked: 81933 unprovoked: 21934 provoked: 31934 unprovoked: 111935 provoked: 41935 unprovoked: 51936 provoked: 91936 unprovoked: 61937 provoked: 21937 unprovoked: 81938 provoked: 61938 unprovoked: 21939 provoked: 31939 unprovoked: 31940 provoked: 21940 unprovoked: 61941 unprovoked: 41942 provoked: 31942 unprovoked: 31943 unprovoked: 11944 unprovoked: 11945 provoked: 11945 unprovoked: 11946 provoked: 11946 unprovoked: 71947 provoked: 21947 unprovoked: 31948 provoked: 31948 unprovoked: 21949 provoked: 31949 unprovoked: 81950 provoked: 11950 unprovoked: 41951 provoked: 21951 unprovoked: 51952 provoked: 31952 unprovoked: 21953 provoked: 41953 unprovoked: 31954 provoked: 41954 unprovoked: 21955 provoked: 21955 unprovoked: 219551956 provoked: 41956 unprovoked: 41957 provoked: 31957 unprovoked: 31958 provoked: 51958 unprovoked: 21959 None: 11959 provoked: 61959 unprovoked: 41960 provoked: 41960 unprovoked: 51961 provoked: 51961 unprovoked: 61962 provoked: 31962 unprovoked: 21963 provoked: 21963 unprovoked: 21964 provoked: 41964 unprovoked: 11965 provoked: 21965 unprovoked: 11966 provoked: 51966 unprovoked: 21967 provoked: 21968 provoked: 21968 unprovoked: 11969 provoked: 21969 unprovoked: 11971 provoked: 11971 unprovoked: 21972 provoked: 31972 unprovoked: 31973 unprovoked: 41974 provoked: 11974 unprovoked: 21975 provoked: 41975 unprovoked: 41976 provoked: 11977 unprovoked: 61978 provoked: 11978 unprovoked: 21979 provoked: 11979 unprovoked: 119791980 provoked: 31980 unprovoked: 31981 unprovoked: 41982 provoked: 21982 unprovoked: 11983 provoked: 11983 unprovoked: 41984 provoked: 21984 unprovoked: 61985 provoked: 31985 unprovoked: 21986 provoked: 21986 unprovoked: 41987 provoked: 31987 unprovoked: 51988 provoked: 11988 unprovoked: 51989 provoked: 41989 unprovoked: 101990 provoked: 31990 unprovoked: 61991 provoked: 21991 unprovoked: 51992 provoked: 11992 unprovoked: 51993 provoked: 41993 unprovoked: 31994 provoked: 21994 unprovoked: 31995 provoked: 21995 unprovoked: 91996 provoked: 21996 unprovoked: 91997 unprovoked: 131998 provoked: 31998 unprovoked: 51999 provoked: 21999 unprovoked: 32000 provoked: 42000 unprovoked: 152001 provoked: 32001 unprovoked: 102002 provoked: 32002 unprovoked: 820022003 provoked: 42003 unprovoked: 92004 provoked: 82004 unprovoked: 152005 provoked: 42005 unprovoked: 122006 provoked: 42006 unprovoked: 62007 provoked: 42007 unprovoked: 132008 provoked: 32008 unprovoked: 122009 provoked: 72009 unprovoked: 212010 unprovoked: 142011 provoked: 62011 unprovoked: 92012 provoked: 52012 unprovoked: 182013 provoked: 62013 unprovoked: 92014 provoked: 122014 unprovoked: 132015 provoked: 112015 unprovoked: 222016 provoked: 112016 unprovoked: 212017 provoked: 42017 unprovoked: 172018 provoked: 92018 unprovoked: 212019 None: 42019 provoked: 62019 unprovoked: 152020 provoked: 92020 unprovoked: 282021 provoked: 82021 unprovoked: 202022 provoked: 52022 unprovoked: 202023 None: 12023 provoked: 52023 unprovoked: 222024 provoked: 62024 unprovoked: 132025 provoked: 32025 unprovoked: 222025
Noneprovokedunprovoked
Incidents per year by provoked or unprovoked, 1803 to 2025. 2026 is not drawn because the file runs to 2 September 2026. Both figures are counts of rows from version 2026-09-03, worked out in the build. Nothing else is added.

Made for agents

Connect your AI agent

Any agent that connects to publicdata.au/mcp can find this dataset, read its 71 fields, count and filter across all 1,306 rows and diff its versions. Every answer names the version and carries Taronga's attribution. No key.

Then ask it: What does Australian Shark-Incident Database hold, and what changed in the newest version?

claude mcp add --transport http publicdata https://publicdata.au/mcp

One command. No key, no account, no sign-up.

Download it as Excel, CSV, JSON and 9 more formats

Pick a format and a version. Excel is picked first because it opens in the tools most offices have. The URL is yours to keep. A dated version never changes.

Format
"Latest" redirects to the newest version and will change when the publisher releases again. A dated version never changes.
https://publicdata.au/d/au-shark-incidents/latest/data.xlsx
Download

In your own tools

Use it in Excel, R, Python and more

Excel and Power BI read the CSV from its address and refresh from it. The R and Python packages take any dataset on this site by its slug, so a new dataset needs no new release. The DuckDB file attaches read-only over HTTPS, and a query reads only the blocks it touches.

The dated URL in the code never changes. https://publicdata.au/d/au-shark-incidents/latest/ redirects to the newest version.

https://publicdata.au/d/au-shark-incidents/latest/data.csv

In Excel choose Data, then From Web, and paste this address. Excel keeps it, so Refresh All reads the newest version. A sheet holds about a million rows; past that, load the query to the Data Model.

What is in it

Column names are made snake_case and the publisher's original header is kept beside each one. Blank cells are null. Nothing is added, removed, ranked or summarised.

FieldTypePublisher's headerNote
uinstringUIN
incident_monthintegerIncident.month
incident_yearintegerIncident.year
victim_injurystringVictim.injury
statestringStateAs recorded; the file mixes Qld and QLD and other spellings, kept as published.
locationstringLocation
latitudenumberLatitude
longitudenumberLongitude
site_categorystringSite.category
site_category_commentstringSite.category.comment
shark_common_namestringShark.common.name
shark_scientific_namestringShark.scientific.name
shark_identification_methodstringShark.identification.method
shark_identification_sourcestringShark.identification.source
shark_length_mstringShark.length.mAs recorded, sometimes a range or a word rather than a figure.
basis_for_lengthstringBasis.for.length
provoked_unprovokedstringProvoked/unprovoked
provocative_actstringProvocative.act
no_sharksintegerNo.sharks
victim_activitystringVictim.activity
fish_spearedstringFish.speared?
commercial_dive_activitystringCommercial.dive.activity
object_of_bitestringObject.of.bite
present_at_time_of_bitestringPresent.at.time.of.bite
direction_first_strikestringDirection.first.strike
shark_behaviourstringShark.behaviour
victim_aware_of_sharkstringVictim.aware.of.shark
shark_capturedstringShark.captured
injury_locationstringInjury.location
injury_severitystringInjury.severity
victim_genderstringVictim.gender
victim_agestringVictim.age
victim_clothingstringVictim.clothing
clothing_coveragestringClothing.coverage
dominant_clothing_colourstringDominant.clothing.colour
other_clothing_colourstringOther.clothing.colour
clothing_patternstringClothing.pattern
fin_colourstringFin.colour
diversionary_action_takenstringDiversionary.action.taken
diversionary_action_outcomestringDiversionary.action.outcome
people_under_3mintegerPeople <3m
people_3_15mintegerPeople 3-15m
time_of_incidentstringTime.of.incident
depth_of_incident_mstringDepth.of.incident.mAs recorded, sometimes a range or a word rather than a figure.
teeth_recoveredstringTeeth.recovered
time_in_water_minstringTime.in.water.minAs recorded, sometimes a range or a word rather than a figure.
water_temperature_cnumberWater.temperature.°C
total_water_depth_mstringTotal.water.depth.mAs recorded, sometimes a range or a word rather than a figure.
water_visability_mnumberWater.visability.m
distance_to_shore_mnumberDistance.to.shore.m
spring_or_neap_tidestringSpring.or.neap.tide
tidal_cyclestringTidal.cycle
wind_conditionstringWind.condition
weather_conditionstringWeather.condition
air_temperature_cnumberAir.temperature.°C
personal_protective_devicestringPersonal.protective.device
deterrent_brand_and_typestringDeterrent.brand.and.type
data_sourcestringData.source
referencestringReference
sa2_2021_codestring(spine: sa2)Code of the Statistical Area Level 2 (2021) the point falls in. Joined by location from abs-sa2-2021, not published by the publisher.
sa2_2021_namestring(spine: sa2)Name of the Statistical Area Level 2 (2021) the point falls in. Joined by location from abs-sa2-2021, not published by the publisher.
lga_2025_codestring(spine: lga)Code of the Local Government Area (2025) the point falls in. Joined by location from abs-lga-2025, not published by the publisher.
lga_2025_namestring(spine: lga)Name of the Local Government Area (2025) the point falls in. Joined by location from abs-lga-2025, not published by the publisher.
sal_2021_codestring(spine: suburb)Code of the Suburb and Locality (2021) the point falls in. Joined by location from abs-suburbs-localities-2021, not published by the publisher.
sal_2021_namestring(spine: suburb)Name of the Suburb and Locality (2021) the point falls in. Joined by location from abs-suburbs-localities-2021, not published by the publisher.
poa_2021_codestring(spine: postcode)Code of the Postal Area (2021) the point falls in. Joined by location from abs-postal-areas-2021, not published by the publisher.
poa_2021_namestring(spine: postcode)Name of the Postal Area (2021) the point falls in. Joined by location from abs-postal-areas-2021, not published by the publisher.
sed_2025_codestring(spine: state_electorate)Code of the State Electoral Division (2025) the point falls in. Joined by location from abs-state-electoral-divisions-2025, not published by the publisher.
sed_2025_namestring(spine: state_electorate)Name of the State Electoral Division (2025) the point falls in. Joined by location from abs-state-electoral-divisions-2025, not published by the publisher.
ced_2025_codestring(spine: federal_electorate)Code of the Commonwealth Electoral Division (2025) the point falls in. Joined by location from abs-federal-electoral-divisions-2025, not published by the publisher.
ced_2025_namestring(spine: federal_electorate)Name of the Commonwealth Electoral Division (2025) the point falls in. Joined by location from abs-federal-electoral-divisions-2025, not published by the publisher.

Download this table as a data dictionary (Excel), or read it as a Frictionless Table Schema at schema.json. The key is uin.

A sample of 10 rows

From the latest version, newest first by incident year, then in the publisher's order, with every field. A blank cell is shown as null.

uinincident_monthincident_yearvictim_injurystatelocationlatitudelongitudesite_categorysite_category_commentshark_common_nameshark_scientific_nameshark_identification_methodshark_identification_sourceshark_length_mbasis_for_lengthprovoked_unprovokedprovocative_actno_sharksvictim_activityfish_spearedcommercial_dive_activityobject_of_bitepresent_at_time_of_bitedirection_first_strikeshark_behaviourvictim_aware_of_sharkshark_capturedinjury_locationinjury_severityvictim_gendervictim_agevictim_clothingclothing_coveragedominant_clothing_colourother_clothing_colourclothing_patternfin_colourdiversionary_action_takendiversionary_action_outcomepeople_under_3mpeople_3_15mtime_of_incidentdepth_of_incident_mteeth_recoveredtime_in_water_minwater_temperature_ctotal_water_depth_mwater_visability_mdistance_to_shore_mspring_or_neap_tidetidal_cyclewind_conditionweather_conditionair_temperature_cpersonal_protective_devicedeterrent_brand_and_typedata_sourcereferencesa2_2021_codesa2_2021_namelga_2025_codelga_2025_namesal_2021_codesal_2021_namepoa_2021_codepoa_2021_namesed_2025_codesed_2025_nameced_2025_codeced_2025_name
129312026injuredNSWsydney, avalon beach-33.6381151.3325coastalsurf beachnullnullnullnullnullnullunprovokednull1surfingnullnullboardnullnullshark swam up behind the surfernullnullhandminor lacerationsmale30'snullnullnullnullnullnullnullpushed shark away causing lacerations to handnullnull545nullnullnullnullnullnull50nullnullnullnullnullnullnullhttps://avalonnews.com.au/local-surfer-escapes-serious-injury-after-early-morning-shark-encounter-at-little-avalon/https://www.northernbeachesadvocate.com.au/2026/01/10/shark-scare-at-avalon/nullnullnullnullnullnullnullnullnullnullnullnull
129412026fatalNSWsydney harbour, nielson park-33.8506151.2651estuary/harbourbeachbull sharkCarcharhinus leucasbite analysisgovernment officialnullnullunprovokednull1swimmingnullnullnullothers jumping into the waternullnullnullnulllegsevere lacerations, blood loss, died in hospitalmale12nullnullnullnullnullnullnullnullnullnull1620nullnullnullnullnullnull10nullnullnullnullnullnullnullnullhttps://www.abc.net.au/news/2026-01-19/nsw-sydney-harbour-shark-attack-boy-update-beach/106243340118011346Rose Bay - Vaucluse - Watsons Bay18500Woollahra14089Vaucluse2030203010084Vaucluse144Wentworth
129512026uninjuredNSWsydney, dee why beach-33.7527151.2981coastalsurf beachbull sharkCarcharhinus leucasbite analysisgovernment officialnullnullunprovokednull1surfingnullnullboardothers surfingnullnullnullnullnullnullmale11nullnullnullnullnullnullnullnullnullnull1100nullnullnullnullnullnull50nullnullnullnullnullnullnullnullhttps://www.abc.net.au/news/2026-01-19/nsw-young-surfer-second-sydney-beach-shark-encounter/106245088nullnullnullnullnullnullnullnullnullnullnullnull
129612026injuredNSWsydney, manly, north steyne-33.7914151.2889coastalsurf beachbull sharkCarcharhinus leucasbite analysisgovernment officialnullnullunprovokednull1surfingnullnullnullothers surfingnullnullnullnullcalfsevere lacerationsmale27nullnullnullnullnullnullnullnullnullnull1820nullnullnullnullnullnull50nullnullnullnullnullnullnullnullhttps://www.abc.net.au/news/2026-01-19/shark-attack-north-steyne-beach-nsw/106246378nullnullnullnullnullnullnullnullnullnullnullnull
129712026injuredNSWcrescent head, point plomer-31.3115152.9703coastalsurf beachbull sharkCarcharhinus leucasnullnullnullnullunprovokednull1surfingnullnullboardnullnullnullnullnullchestminor woundmale39nullnullnullnullnullnullnullnullnullnull900nullnullnullnullnullnull50nullnullnullnullnullnullnullnullhttps://www.9news.com.au/national/point-plomer-shark-attack-surfer-speaks-about-moment-he-was-bitten/de4aa222-ab0c-4137…nullnullnullnullnullnullnullnullnullnullnullnull
129832026injuredNSWsydney, avalon beach-33.6366151.3328coastalsurf beachnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull1012nullnullnullnullnullnullnullnullnullnullnullnullnullnullLong Reef Boardridersnullnullnullnullnullnullnullnullnullnullnullnullnull
129942026injuredSAfleurieu peninsula, middleton beach-35.5156138.7103coastalsurf beachwhite sharkCarcharodon carchariasvictim thought bronze whaler but white more likelynull1.5bite markunprovokednull1surfingnullnullnullnullnullnullnullnullankleminor woundmale16nullnullnullnullnullnullnullnullnullnull1630nullnullnullnullnullnull100nullnullnullnullnullnullnullnullhttps://www.abc.net.au/news/2026-04-06/sa-16yo-surfer-shark-encounter-over-easter/106534200nullnullnullnullnullnullnullnullnullnullnullnull
130042026injuredNSWsydney, bronte beach-33.9033151.2692coastalsurf beachwobbegongOrectolobidaebite analysisgovernment officialnullnullunprovokednull1swimmingnullnullnullnullnullnullnullnullhandminor woundfemale50'snullnullnullnullnullnullnullnullnullnull1730nullnullnullnullnullnull30nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
130152026fatalWArottnest island, horseshoe reef-31.9722115.5149coastalreefwhite sharkCarcharodon carchariasnullnull4nullprovokedspearfishing1spearfishingnullnullnullnullnullnullnullnulllower legsseveremale38nullnullnullnullnullnullnullnullnullnull1000nullnullnullnullnullnull1000nullnullnullnullnullnullnullnullhttps://www.abc.net.au/news/2026-05-16/man-attacked-by-shark-rottnest-island/106688012nullnullnullnullnullnullnullnullnullnullnullnull
130252026fatalQLDhull heads, kennedy shoals gbr-18.0815146.4419coastalreefbull sharkCarcharhinus leucasbite analysisgovernment officialnullnullprovokedspearfishing1spearfishingnullnullnullanother spearfishernullnullnullnullheadfatalmale39nullnullnullnullnullnullnullnullnullnull1200nullnullnullnullnullnull45000nullnullnullnullnullnullnullhttps://www.nine.com.au/australia-news/qld/shark-attack-far-north-queensland-20260524-p6004k.htmlhttps://www.observernews.com.au/man-killed-in-shark-attack-2026-05-27nullnullnullnullnullnullnullnullnullnullnullnull
The first row as JSON

As it appears in data.json.

GET https://publicdata.au/d/au-shark-incidents/latest/data.json
{
  "uin": "1",
  "incident_month": 1,
  "incident_year": 1791,
  "victim_injury": "fatal",
  "state": "NSW",
  "location": "sydney (near)",
  "latitude": -33.86,
  "longitude": 151.2,
  "site_category": "coastal",
  "site_category_comment": null,
  "shark_common_name": "white shark",
  "shark_scientific_name": "Carcharodon carcharias",
  "shark_identification_method": "bite analysis, shark behaviour, geographical location",
  "shark_identification_source": null,
  "shark_length_m": null,
  "basis_for_length": null,
  "provoked_unprovoked": "unprovoked",
  "provocative_act": null,
  "no_sharks": null,
  "victim_activity": "swimming",
  "fish_speared": null,
  "commercial_dive_activity": null,
  "object_of_bite": null,
  "present_at_time_of_bite": null,
  "direction_first_strike": null,
  "shark_behaviour": null,
  "victim_aware_of_shark": null,
  "shark_captured": null,
  "injury_location": "torso",
  "injury_severity": "major lacerations",
  "victim_gender": "female",
  "victim_age": null,
  "victim_clothing": null,
  "clothing_coverage": null,
  "dominant_clothing_colour": null,
  "other_clothing_colour": null,
  "clothing_pattern": null,
  "fin_colour": null,
  "diversionary_action_taken": null,
  "diversionary_action_outcome": null,
  "people_under_3m": null,
  "people_3_15m": null,
  "time_of_incident": null,
  "depth_of_incident_m": "0",
  "teeth_recovered": null,
  "time_in_water_min": null,
  "water_temperature_c": null,
  "total_water_depth_m": null,
  "water_visability_m": null,
  "distance_to_shore_m": null,
  "spring_or_neap_tide": null,
  "tidal_cycle": null,
  "wind_condition": null,
  "weather_condition": null,
  "air_temperature_c": null,
  "personal_protective_device": null,
  "deterrent_brand_and_type": null,
  "data_source": "book",
  "reference": "shark&survl, whitley 1958, book ref 1793",
  "sa2_2021_code": null,
  "sa2_2021_name": null,
  "lga_2025_code": null,
  "lga_2025_name": null,
  "sal_2021_code": null,
  "sal_2021_name": null,
  "poa_2021_code": null,
  "poa_2021_name": null,
  "sed_2025_code": null,
  "sed_2025_name": null,
  "ced_2025_code": null,
  "ced_2025_name": null
}

Query it without downloading

The query API returns only the rows you ask for, as JSON, NDJSON or CSV, from the same typed rows as the files. It needs no key. Build a query here and run it, then copy the URL or the code into your own work.

Try rows or aggregate for this dataset. The query builder needs JavaScript.

How filters work

Each filter is field=operator.value in the query string, and every filter must match. A number or date field compares as a number or date, and a text field compares as text. Values are case-sensitive except with ilike. Prefix not. to negate a filter, as not.eq.value.

OperatorWhat it matches
eq.valueEqual to the value.
neq.valueNot equal to the value. A blank cell does not match.
gt.valueGreater than the value.
gte.valueGreater than or equal to the value.
lt.valueLess than the value.
lte.valueLess than or equal to the value.
like.*text*Matches a pattern where * stands for any run of characters. Case-sensitive.
ilike.*text*The same as like, ignoring case.
in.(a,b,c)Equal to any value in the list. A value cannot contain a comma.
is.nullBlank in the source, or suppressed by the publisher.
ParameterWhat it does
selectFields to return, comma-separated. Every field when absent.
orderfield.asc or field.desc, comma-separated. The publisher's row order when absent.
limitRows per page, 1 to 10,000. 100 when absent.
offsetRows to skip. The next URL in each answer sets it for you.
groupOn aggregate, fields to group by, comma-separated.
metricOn aggregate, count, sum.field, avg.field, min.field or max.field, comma-separated. count when absent.
formatjson, ndjson or csv. JSON carries the provenance header, and the others carry it in response headers.

Without a version the API answers from the newest loaded version, and that answer changes when the publisher releases again. Put versions/<date>/ before rows or aggregate for an answer that never changes. /api/v1/datasets/<slug>/versions lists the loaded versions. The 1 newest version is loaded; versions lists them.

The API allows 60 requests in 10 seconds from one address. Above that it answers 429 for 10 seconds with a Retry-After header, a RateLimit-Policy header and a JSON body that gives the limit. Every API answer carries the same RateLimit-Policy. A client should wait the Retry-After seconds, or read the files, which have no limit. openapi.json describes this dataset's query paths for client generators and agents.

https://publicdata.au/mcp is a remote MCP server over Streamable HTTP with the same tools, defined in the same place, so a tool added to the pages is added here too. It needs no key and no account. The row tools are held to the query API's limit of 60 queries in 10 seconds from one address, and each call is two queries because it also counts the matching rows. Add it to Claude Code with claude mcp add --transport http publicdata https://publicdata.au/mcp, add the URL in Claude as a custom connector, or give it to any client that connects to remote MCP servers. Each queryable dataset is also a resource at https://publicdata.au/d/<slug>/fields.json, which lists its fields with their types, the publisher's descriptions, their ranges and the values they hold, so an agent can read a dataset's shape before it writes a query.

What changed

One version for every release the publisher has made since this site started following the dataset. The date is the day the file changed on the portal. The "as at" date is the publisher's own.

  • 2026-09-03as at 2 September 2026
    1,306 rows71 fieldsxlsx801b9b4d1317

versions.json · changes.json · history.tar.zst (105 KB, every version's Parquet and manifest)

Questions

How do I download Australian Shark-Incident Database as a CSV file?

Open https://publicdata.au/d/au-shark-incidents/latest/data.csv. It redirects to the newest dated version, which is https://publicdata.au/d/au-shark-incidents/v/2026-09-03/data.csv today. The same path serves Excel, JSON, GeoJSON, Parquet, SQLite, DuckDB, GeoPackage, GeoParquet, NDJSON, Arrow. A dated URL never changes, so use it when the file must stay the same.

Can I open Australian Shark-Incident Database in Excel?

Yes. https://publicdata.au/d/au-shark-incidents/v/2026-09-03/data.xlsx is a workbook with the 1,306 rows on a records sheet, the field list on a second sheet and the provenance on a third. The CSV also opens in Excel. https://publicdata.au/d/au-shark-incidents/v/2026-09-03/data.csv.gz is the CSV at about a tenth of the size.

What years does Australian Shark-Incident Database cover?

The current version covers 1791 to 2026, as at 2 September 2026. Each release from Taronga becomes a new dated version here, and earlier versions stay online.

How often is Australian Shark-Incident Database updated?

Taronga releases it yearly. This site checks the portal every week and adds a dated version when the file changes.

Can I use Australian Shark-Incident Database commercially?

Yes. CC BY 4.0 allows commercial use, redistribution and derived works as long as the attribution is kept. The attribution string is in this page's side column and inside every file.

Is this the official source for Australian Shark-Incident Database?

No. The publisher is Taronga Conservation Society Australia, and its page is https://zenodo.org/records/22262542. This site republishes the publisher's file without changing its content. The original sits beside every version as source.xlsx with its SHA-256, so the two can be compared.

What coordinate system does Australian Shark-Incident Database use?

Coordinates as recorded, in decimal degrees; many are approximate. The GeoJSON file uses the same coordinates, which is what GeoJSON expects.

Which SA2, council area, suburb, postcode, state electorate and federal electorate is each row of Australian Shark-Incident Database in?

Each row with coordinates carries the SA2 (2021), Council area (LGA 2025), Suburb or locality (2021), Postcode (postal area 2021), State electorate (2025) and Federal electorate (2025) its point falls in, with the code of each. This site joins them by location against the ABS boundaries, https://publicdata.au/d/abs-sa2-2021/, https://publicdata.au/d/abs-lga-2025/, https://publicdata.au/d/abs-suburbs-localities-2021/, https://publicdata.au/d/abs-postal-areas-2021/, https://publicdata.au/d/abs-state-electoral-divisions-2025/, https://publicdata.au/d/abs-federal-electoral-divisions-2025/, and Taronga did not publish them. The schema marks each one as joined and names the boundary version. A row without coordinates, or a point outside every area, has them blank. Place columns from Australian Statistical Geography Standard (ASGS) Edition 3 boundaries, Australian Bureau of Statistics, licensed under CC BY 4.0.

What this site did to the data. Cells were typed, headers were renamed and the encoding was made UTF-8. Rows were left alone. The publisher's file sits beside every version as source.xlsx so the change can be checked.