{
 "openapi": "3.1.0",
 "info": {
  "title": "Deep Almanac: Australian travel insurance",
  "version": "1.0.0",
  "summary": "What Australians pay for travel insurance and how much comes back as claims, by quarter and by state, with the register of companies authorised to underwrite it.",
  "description": "Travel insurance in Australia has no published price list: a premium is priced from the trip, so a policy has no single price and neither a regulator nor an insurer publishes a rate table for one. A price for a specific trip takes minutes to get from the brand; what does not exist is a list, so this dataset holds none. What it holds is APRA's statistics for travel as a class of business — insurance revenue and incurred claims, quarterly, nationally and by state — and the register of companies authorised to carry the risk. In FY26 the class returned 51.7% of premium as claims.\n\nRead questions.json first: it says what a reader has to be asked, what this dataset cannot answer, and which figures are most often misread (claims are reported negative, and the series has a reporting-basis break at September 2023 that must not be crossed).\n\nStatic JSON, no authentication, CORS open. Reference data, not financial or insurance advice.",
  "termsOfService": "https://deepalmanac.com/terms",
  "contact": {
   "name": "Deep Almanac",
   "url": "https://deepalmanac.com"
  },
  "license": {
   "name": "Deep Almanac's own work CC BY 4.0; source data under its own terms, listed in licences in each index.json",
   "url": "https://deepalmanac.com/terms#data-licences"
  }
 },
 "servers": [
  {
   "url": "https://deepalmanac.com"
  }
 ],
 "security": [],
 "tags": [
  {
   "name": "travel-insurance",
   "description": "Australian travel insurance plans: what each brand's plans cover and exclude, who underwrites them, and the cover that credit cards carry.",
   "externalDocs": {
    "description": "Dataset page",
    "url": "https://deepalmanac.com/au/insurance/travel/"
   }
  }
 ],
 "paths": {
  "/au/insurance/travel/v1/index.json": {
   "get": {
    "tags": [
     "travel-insurance"
    ],
    "summary": "Dataset index",
    "description": "Every file in this dataset with its timestamps, and the question guide embedded under `answering`.",
    "operationId": "getTravelInsuranceIndex",
    "responses": {
     "200": {
      "description": "Dataset index",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "dataset": {
           "type": "string",
           "description": "Dataset name."
          },
          "page": {
           "type": "string",
           "description": "Human-readable page for the dataset.",
           "format": "uri"
          },
          "start_here": {
           "type": [
            "object",
            "null"
           ],
           "description": "The small file that answers most questions here: answer_file (a URL template), inputs (how to fill it), example (a filled-in URL) and sometimes also (the next file for a common variant).",
           "properties": {
            "answer_file": {
             "type": "string",
             "description": "URL template of the answer file."
            },
            "inputs": {
             "type": "string",
             "description": "What each placeholder takes."
            },
            "example": {
             "type": "string",
             "description": "A filled-in answer file URL.",
             "format": "uri"
            },
            "also": {
             "type": "string",
             "description": "Another file for a common variant of the question."
            },
            "lookup": {
             "type": "string",
             "description": "Where present: a /v1/lookup URL that takes the reader's own numbers, applies the bucket rules and redirects to the answer file.",
             "format": "uri"
            },
            "compare": {
             "type": "string",
             "description": "Where present: a /v1/compare URL that ranks every rate at the reader's exact amount and answers with JSON directly.",
             "format": "uri"
            }
           }
          },
          "generated_at": {
           "type": "string",
           "description": "When this index was written, UTC, YYYY-MM-DDTHH:MM:SSZ.",
           "format": "date-time",
           "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
          },
          "fetched_at": {
           "type": "string",
           "description": "When the source was last fetched, UTC, YYYY-MM-DDTHH:MM:SSZ.",
           "format": "date-time",
           "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
          },
          "data_as_of": {
           "type": "string",
           "description": "How current the data is: a date (YYYY-MM-DD) or a UTC timestamp (YYYY-MM-DDTHH:MM:SSZ); data_as_of_basis says what it means here.",
           "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}Z)?$"
          },
          "data_as_of_basis": {
           "type": "string",
           "description": "One sentence saying what data_as_of means for this dataset."
          },
          "source": {
           "type": "string",
           "description": "Data source statement."
          },
          "licence_note": {
           "type": "string",
           "description": "Terms of reuse and the not-advice note."
          },
          "licences": {
           "type": "array",
           "description": "What may be reused and on what terms, layer by layer: each layer's source, the fields it covers, its licence and the attribution it asks for. The last layer is Deep Almanac's own work (CC BY 4.0), covering every field no other layer names. Reusing a field means meeting the terms of the layer that covers it.",
           "items": {
            "type": "object",
            "required": [
             "layer",
             "covers",
             "licence",
             "licence_url",
             "attribution"
            ],
            "properties": {
             "layer": {
              "type": "string",
              "description": "The source."
             },
             "covers": {
              "type": "string",
              "description": "The fields it covers."
             },
             "licence": {
              "type": "string",
              "description": "Its licence, or why there is none."
             },
             "licence_url": {
              "type": [
               "string",
               "null"
              ],
              "format": "uri",
              "description": "The licence's own page, where it has one."
             },
             "attribution": {
              "type": "string",
              "description": "The credit the layer asks for."
             }
            }
           }
          },
          "questions": {
           "type": "string",
           "description": "This dataset's questions.json: what to ask the reader first and which file answers each.",
           "format": "uri"
          },
          "openapi": {
           "type": "string",
           "description": "This dataset's OpenAPI document.",
           "format": "uri"
          },
          "status": {
           "type": "string",
           "description": "https://deepalmanac.com/status.json: when every dataset was last fetched and when it counts as overdue.",
           "format": "uri"
          },
          "llms": {
           "type": "string",
           "description": "https://deepalmanac.com/llms.txt: the site's guide for language models.",
           "format": "uri"
          },
          "files": {
           "type": "array",
           "description": "Every top-level file this dataset publishes, as absolute URLs.",
           "items": {
            "type": "string",
            "format": "uri"
           }
          },
          "file_guide": {
           "type": "array",
           "description": "What each of those files holds, in the same order.",
           "items": {
            "type": "object",
            "properties": {
             "file": {
              "type": "string"
             },
             "url": {
              "type": "string",
              "format": "uri"
             },
             "description": {
              "type": "string"
             }
            }
           }
          },
          "no_prices": {
           "type": "string"
          },
          "basis_break": {
           "type": "object"
          },
          "headline": {
           "type": "object"
          },
          "sources": {
           "type": "array",
           "items": {
            "type": "object"
           }
          },
          "answering": {
           "type": "object"
          },
          "brands_dir": {
           "type": "object",
           "properties": {
            "path": {
             "type": "string"
            },
            "url_template": {
             "type": "string"
            },
            "page_template": {
             "type": "string"
            },
            "description": {
             "type": "string"
            },
            "brands": {
             "type": "array",
             "items": {
              "type": "object",
              "properties": {
               "brand_slug": {
                "type": "string"
               },
               "url": {
                "type": "string",
                "format": "uri"
               },
               "page": {
                "type": "string",
                "format": "uri"
               }
              }
             }
            }
           }
          },
          "cards_dir": {
           "type": "object",
           "properties": {
            "path": {
             "type": "string"
            },
            "url_template": {
             "type": "string"
            },
            "page_template": {
             "type": "string"
            },
            "description": {
             "type": "string"
            },
            "programmes": {
             "type": "array",
             "items": {
              "type": "object",
              "properties": {
               "programme_slug": {
                "type": "string"
               },
               "url": {
                "type": "string",
                "format": "uri"
               },
               "page": {
                "type": "string",
                "format": "uri"
               }
              }
             }
            }
           }
          }
         },
         "required": [
          "dataset",
          "page",
          "start_here",
          "generated_at",
          "fetched_at",
          "data_as_of",
          "data_as_of_basis",
          "source",
          "licence_note",
          "licences",
          "questions",
          "openapi",
          "status",
          "llms",
          "files"
         ]
        }
       }
      }
     }
    }
   }
  },
  "/au/insurance/travel/v1/questions.json": {
   "get": {
    "tags": [
     "travel-insurance"
    ],
    "summary": "What to ask a reader before answering",
    "description": "The questions readers ask, what this dataset cannot answer, the inputs to collect first, and which file answers what. Start here.",
    "operationId": "getTravelInsuranceQuestions",
    "responses": {
     "200": {
      "description": "What to ask a reader before answering",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/au/insurance/travel/v1/class-series.json": {
   "get": {
    "tags": [
     "travel-insurance"
    ],
    "summary": "Travel class revenue, claims and loss ratio by quarter",
    "description": "Two separate series either side of the AASB 17 basis break at September 2023, financial-year aggregates, and every class of business ranked by the share of premium returned as claims.",
    "operationId": "getTravelInsuranceClassSeries",
    "responses": {
     "200": {
      "description": "Travel class revenue, claims and loss ratio by quarter",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/au/insurance/travel/v1/by-state.json": {
   "get": {
    "tags": [
     "travel-insurance"
    ],
    "summary": "The same by state and territory",
    "description": "Where the business is written, not where the traveller went. Small states are volatile; read revenue beside the ratio.",
    "operationId": "getTravelInsuranceByState",
    "responses": {
     "200": {
      "description": "The same by state and territory",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/au/insurance/travel/v1/insurers.json": {
   "get": {
    "tags": [
     "travel-insurance"
    ],
    "summary": "Companies authorised to underwrite general insurance",
    "description": "APRA's register, matched where unambiguous to ASIC's AFS licensee register. Lists insurers, not retail brands.",
    "operationId": "getTravelInsuranceInsurers",
    "responses": {
     "200": {
      "description": "Companies authorised to underwrite general insurance",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/au/insurance/travel/v1/underwriters.json": {
   "get": {
    "tags": [
     "travel-insurance"
    ],
    "summary": "Which company underwrites each retail travel insurance brand",
    "description": "Read out of each brand's own Product Disclosure Statement and Target Market Determination, with the sentence it was read from and a check of that insurer against APRA's and ASIC's registers. This is the file that answers 'who is actually behind this brand'.",
    "operationId": "getTravelInsuranceUnderwriters",
    "responses": {
     "200": {
      "description": "Which company underwrites each retail travel insurance brand",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/au/insurance/travel/v1/policies.json": {
   "get": {
    "tags": [
     "travel-insurance"
    ],
    "summary": "Every fact read out of each brand's disclosure documents",
    "description": "Every fact read out of each brand's disclosure documents -- insurer, distributor, cooling-off period, target market, document dates -- each with the sentence it came from and the rule that found it; and, per plan under brands[].pre_existing_conditions, what the plan does about a pre-existing medical condition, with the PDS link where some named conditions are covered automatically.",
    "operationId": "getTravelInsurancePolicies",
    "responses": {
     "200": {
      "description": "Every fact read out of each brand's disclosure documents",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/au/insurance/travel/v1/rules.json": {
   "get": {
    "tags": [
     "travel-insurance"
    ],
    "summary": "What each extraction rule id means",
    "description": "Resolves the `rule` in any evidence record to a description and the function that applies it.",
    "operationId": "getTravelInsuranceRules",
    "responses": {
     "200": {
      "description": "What each extraction rule id means",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/au/insurance/travel/v1/gates.json": {
   "get": {
    "tags": [
     "travel-insurance"
    ],
    "summary": "What decides whether a policy is available to a traveller at all",
    "description": "Eight gates per policy -- age, destination, trip length, residency, return ticket, pre-existing conditions, pregnancy and activities -- each with the sentence it was read from and the scope it applies at, because an age ceiling can govern the policy, one plan, one option or an extension and only the first two refuse a purchase. `answered` holds five traveller profiles already matched against every policy, with a verdict and the reasons behind it. A gate the document does not state is unknown, never eligible.",
    "operationId": "getTravelInsuranceGates",
    "responses": {
     "200": {
      "description": "What decides whether a policy is available to a traveller at all",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/au/insurance/travel/v1/comparison.json": {
   "get": {
    "tags": [
     "travel-insurance"
    ],
    "summary": "Every policy compared with every other, clause by clause",
    "description": "What each of the 32 current policies does with thirteen topics -- snow sports, cruising, pre-existing conditions, adventure activities, epidemics, one-way travel, pregnancy, alcohol, mental health, the per-item electronics limit, terrorism, government travel warnings and the rental vehicle excess -- with the sentence each policy says it in. Plus the clauses distinctive to one insurer, with whether any other insurer excludes the same subject in different words. It compares wording, not meaning, and every finding carries that caveat.",
    "operationId": "getTravelInsuranceComparison",
    "responses": {
     "200": {
      "description": "Every policy compared with every other, clause by clause",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/au/insurance/travel/v1/corpus-manifest.json": {
   "get": {
    "tags": [
     "travel-insurance"
    ],
    "summary": "Every document read, and the facts that make it checkable",
    "description": "URL, sha256, word count and retrieval time per document. The text is the insurers' copyright and is not published; this manifest is what lets anyone rebuild the corpus and get the same bytes.",
    "operationId": "getTravelInsuranceCorpusManifest",
    "responses": {
     "200": {
      "description": "Every document read, and the facts that make it checkable",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/au/insurance/travel/v1/insurer-summary.json": {
   "get": {
    "tags": [
     "travel-insurance"
    ],
    "summary": "One standardised summary per insurer, with every plan",
    "description": "What Australian travel insurance has no mandated summary document for: one entry per insurer, the brands it underwrites, every plan under each, and that plan's own benefit limits. The flat table of every plan a traveller can buy is under `plans.rows`, and the questions readers ask are answered under `answered`.",
    "operationId": "getTravelInsuranceInsurerSummary",
    "responses": {
     "200": {
      "description": "One standardised summary per insurer, with every plan",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/au/insurance/travel/v1/quote-forms.json": {
   "get": {
    "tags": [
     "travel-insurance"
    ],
    "summary": "What each brand's quote form asks before it will price a trip",
    "description": "Read off the forms themselves. No premium is published anywhere, so the price always comes from the brand; this says what a traveller needs ready before asking for one.",
    "operationId": "getTravelInsuranceQuoteForms",
    "responses": {
     "200": {
      "description": "What each brand's quote form asks before it will price a trip",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  },
  "/au/insurance/travel/v1/card-policies.json": {
   "get": {
    "tags": [
     "travel-insurance"
    ],
    "summary": "Complimentary travel insurance that comes with a credit card",
    "description": "Every card programme read from the issuers' own documents: who carries the risk, what must be charged to the card before any cover exists, how long one journey is covered, the age the cover stops at, and whether pre-existing conditions are excluded. Each fact carries the sentence it was read from. No premiums: the cover comes with the card.",
    "operationId": "getTravelInsuranceCardPolicies",
    "responses": {
     "200": {
      "description": "Complimentary travel insurance that comes with a credit card",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     }
    }
   }
  }
 },
 "x-dataset": {
  "no_prices": "This dataset holds no travel insurance premiums, because no price list exists to hold. A premium is priced from the trip -- the travellers' ages, the destination, the dates, existing conditions and the excess chosen -- so a policy has no single price, and no regulator or insurer publishes a rate table for one. That is not the same as a price being hard to get: any of these brands will quote a specific trip in minutes through its own form or phone line, and a comparison site will quote several at once. What nobody publishes is a list.",
  "basis_break": {
   "at": "2023-09-30",
   "why": "AASB 17 changed what general insurers report. The quarters to June 2023 are gross earned premium and gross incurred claims; those from September 2023 are insurance revenue and incurred claims. They are different measurements of related things.",
   "do_not": "Do not join the two series into one line or compute a change across 2023. Compare a year with another year on the same basis."
  },
  "data_as_of": "2026-06-30",
  "sources": [
   {
    "source_id": "apra-qgips-current",
    "source_name": "APRA Quarterly General Insurance Performance Statistics (current basis)",
    "source_url": "https://www.apra.gov.au/system/files/2026-08/Quarterly%20general%20insurance%20performance%20statistics%20database%20September%202023%20to%20June%202026.xlsx",
    "source_sha256": "c82207709b1161065eaaeaf9aa30ff8295af9c43bf8050ae537a79e10a64d5af",
    "source_first_seen_at": "2026-10-05T13:21:42Z",
    "licence": "CC-BY-3.0-AU",
    "stale": false
   },
   {
    "source_id": "apra-qgips-historical",
    "source_name": "APRA Quarterly General Insurance Performance Statistics (historical basis, to June 2023)",
    "source_url": "https://www.apra.gov.au/system/files/2025-06/Quarterly%20general%20insurance%20performance%20statistics%20database%20%28historical%20data%29%20December%202002%20to%20June%202023.xlsx",
    "source_sha256": "dd617e5ee6cb63d94a5a4160a7815df99072f1dde66a1d17b808004bb469b54c",
    "source_first_seen_at": "2026-10-05T13:21:43Z",
    "licence": "CC-BY-3.0-AU",
    "stale": false
   },
   {
    "source_id": "apra-gi-register",
    "source_name": "APRA register of authorised general insurers",
    "source_url": "https://www.apra.gov.au/registers/list-general-insurance",
    "source_sha256": "112baf4e0c3f7d28db4a4a72701fb98d125eadf3a58dafa0fcce73337831b0ad",
    "source_first_seen_at": "2026-11-04T23:29:00Z",
    "licence": "CC-BY-3.0-AU",
    "stale": false
   },
   {
    "source_id": "asic-afs-licensees",
    "source_name": "ASIC Australian Financial Services Licensee register",
    "source_url": "https://data.gov.au/data/dataset/ab7eddce-84df-4098-bc8f-500d0d9776d1/resource/d98a113d-6b50-40e6-b65f-2612efc877f4/download/afs_lic_202611.csv",
    "source_sha256": "6c23e63645a1479b8f762f236710f28ae9e5e5d7dd7581134779bf863380c21d",
    "source_first_seen_at": "2026-11-04T23:29:03Z",
    "licence": "CC-BY-3.0-AU",
    "stale": false
   }
  ]
 }
}
