# NOTAMs Archive endpoint

The following document contains details about NOTAMs archive endpoint. **Please note that archive endpoint availability is limited to the Notamify's historical NOTAM availability. For more details, contact <hello@notamify.com>**

If none of locations provided in the query are not available in Notamify Database, the service responds with 404 message, without charging credits.

**Limits:**

> The endpoint accepts 5 ICAO codes and 1 archive date per call.

**Example param setup in the URL:**

```url
https://api.notamify.com/api/v2/notams/archive?location=EDDM&location=EGLL&valid_at=2024-09-20
```

#### Python SDK Example

```python
from datetime import date
from notamify_sdk import NotamifyClient, HistoricalNotamsQuery

client = NotamifyClient(token="YOUR_API_KEY")

query = HistoricalNotamsQuery(
    location=["EDDM", "EGLL"],
    valid_at=date(2025, 9, 20),
)

result = client.get_historical_notams(query)

for notam in result.notams:
    print(f"{notam.notam_number}: {notam.interpretation.excerpt}")
```

## GET /notams/archive

>

```json
{"openapi":"3.1.1","info":{"title":"Notamify API V2","version":"0.0.10"},"servers":[{"url":"https://api.notamify.com/api/v2"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"NotamListResult":{"properties":{"notams":{"items":{"$ref":"#/components/schemas/NotamDTO"},"type":"array","title":"Notams"},"total_count":{"type":"integer","title":"Total Count"},"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"}},"type":"object","required":["notams","total_count","page","per_page"],"title":"NotamListResult"},"NotamDTO":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique identifier for the NOTAM."},"notam_number":{"type":"string","title":"Notam Number","description":"NOTAM number or identifier."},"location":{"type":"string","title":"Location","description":"Location where the NOTAM is applicable."},"icao_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icao Code","description":"ICAO code for the airport or facility."},"classification":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Classification","description":"Classification of the NOTAM: DOM, FDC, INTL, or MIL."},"starts_at":{"type":"string","format":"date-time","title":"Starts At","description":"Start datetime of NOTAM validity."},"ends_at":{"type":"string","format":"date-time","title":"Ends At","description":"End datetime of NOTAM validity."},"issued_at":{"type":"string","format":"date-time","title":"Issued At","description":"Datetime when the NOTAM was issued."},"is_estimated":{"type":"boolean","title":"Is Estimated","description":"Indicates if the NOTAM times are estimated (EST)."},"is_permanent":{"type":"boolean","title":"Is Permanent","description":"Indicates if the NOTAM is permanen (PERM)t."},"message":{"type":"string","title":"Message","description":"Only the message of the NOTAM."},"icao_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icao Message","description":"Only the ICAO formatted message of the NOTAM."},"qcode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Qcode","description":"Raw 5-letter Q-code extracted from the NOTAM message (e.g., QMRLC)."},"interpretation":{"anyOf":[{"$ref":"#/components/schemas/NotamInterpretationDTO"},{"type":"null"}],"description":"Interpretation details of the NOTAM."}},"type":"object","required":["id","notam_number","location","starts_at","ends_at","issued_at","is_estimated","is_permanent","message"],"title":"NotamDTO","description":"Data Transfer Object (DTO) for a NOTAM (Notice to Air Missions).\n\nAttributes:\n    notam_number (str): The unique identifier for the NOTAM\n    location (str): The facility designator/location identifier this NOTAM applies to\n    starts_at (datetime): When this NOTAM becomes active\n    ends_at (datetime): When this NOTAM expires\n    message (str): The human-readable traditional format message\n    icao_message (str): The ICAO format message\n    interpretation (Optional[NotamInterpretationDTO]): Optional interpretation of the NOTAM content"},"NotamInterpretationDTO":{"properties":{"description":{"type":"string","title":"Description","description":"Detailed description of the NOTAM interpretation."},"excerpt":{"type":"string","title":"Excerpt","description":"Brief excerpt summarizing the interpretation."},"category":{"type":"string","title":"Category","description":"Interpretation category."},"subcategory":{"type":"string","title":"Subcategory","description":"Interpretation subcategory."},"map_elements":{"anyOf":[{"items":{"$ref":"#/components/schemas/NotamMapElementDTO"},"type":"array"},{"type":"null"}],"title":"Map Elements","description":"List of map elements extracted from the interpretation."},"affected_elements":{"items":{"$ref":"#/components/schemas/AffectedElementDTO"},"type":"array","title":"Affected Elements","description":"List of affected elements described in the NOTAM."},"schedules":{"items":{"$ref":"#/components/schemas/NotamScheduleInterpretationDTO"},"type":"array","title":"Schedules","description":"List of schedule interpretations for the NOTAM."},"schedule_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Schedule Description","description":"Human-readable schedule description."}},"type":"object","required":["description","excerpt","category","subcategory"],"title":"NotamInterpretationDTO"},"NotamMapElementDTO":{"properties":{"element_type":{"type":"string","title":"Element Type","description":"Type of the map element (e.g., line, polygon, point)."},"coordinates":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Coordinates","description":"Coordinates of the map element."},"description":{"type":"string","title":"Description","description":"Description of the map element."},"area_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Area Number","description":"Optional area number identifier for the element."},"geojson":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Geojson","description":"GeoJSON representation of the map element."},"bottom":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Bottom","description":"Lower vertical limit with value, unit, reference, value_ft, and raw_string."},"top":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Top","description":"Upper vertical limit with value, unit, reference, value_ft, raw_string, and optional embedded height data."}},"type":"object","required":["element_type","coordinates","description"],"title":"NotamMapElementDTO","description":"Data Transfer Object for NOTAM map elements."},"AffectedElementDTO":{"properties":{"type":{"type":"string","title":"Type","description":"Type of the affected element."},"identifier":{"type":"string","title":"Identifier","description":"Identifier of the affected element."},"effect":{"type":"string","title":"Effect","description":"Effect experienced by the element."},"details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Details","description":"Additional details regarding the effect, if any."},"subtype":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subtype","description":"Optional more specific subtype of the affected element."},"semantics":{"anyOf":[{"$ref":"#/components/schemas/AffectedElementSemanticsDTO"},{"type":"null"}],"description":"Machine-readable operational semantics for the statement."}},"type":"object","required":["type","identifier","effect"],"title":"AffectedElementDTO"},"AffectedElementSemanticsDTO":{"properties":{"conditions":{"items":{"$ref":"#/components/schemas/AffectedElementClauseDTO"},"type":"array","title":"Conditions","description":"Machine-readable conditions, including stand or gate subsets when explicitly stated."},"exceptions":{"items":{"$ref":"#/components/schemas/AffectedElementClauseDTO"},"type":"array","title":"Exceptions","description":"Machine-readable exceptions."},"changes":{"items":{"$ref":"#/components/schemas/AffectedElementChangeDTO"},"type":"array","title":"Changes","description":"Machine-readable changes."},"references":{"items":{"$ref":"#/components/schemas/AffectedElementReferenceDTO"},"type":"array","title":"References","description":"References to related objects."}},"type":"object","title":"AffectedElementSemanticsDTO"},"AffectedElementClauseDTO":{"properties":{"dimension":{"type":"string","title":"Dimension","description":"Clause dimension."},"operator":{"type":"string","title":"Operator","description":"Clause operator."},"value":{"anyOf":[{"$ref":"#/components/schemas/ScalarMeasurementValueDTO"},{"$ref":"#/components/schemas/FractionalMeasurementValueDTO"},{"$ref":"#/components/schemas/GroupedMeasurementValueDTO"},{"$ref":"#/components/schemas/ProcedureCapabilityDTO"},{"items":{"type":"string","enum":["TAKEOFF","LANDING","APPROACH","ARRIVAL","DEPARTURE","TAXIING","LOCAL_FLIGHT","TRAINING_FLIGHT","CIRCUIT","INTERNATIONAL_FLIGHT","FIXED_WING","HELICOPTER","GLIDER","GENERAL_AVIATION","NON_SCHEDULED","NON_COMMERCIAL","SCHEDULED","IFR","VFR","STATE","MILITARY","A","B","C","D","E","F","H","LIGHT","MEDIUM","HEAVY","SUPER","ALTERNATE","DIVERSION","DESTINATION","AVGAS_100LL","AVGAS_100","AVGAS_B_91_115","AVGAS_UL91","AVGAS_UL94","AVGAS_UL85","AVGAS_82UL","AVGAS_91_96UL","AVGAS_80_87","AVGAS_115_145","JET_A","JET_A1","JET_B","JP_1","JP_4","JP_5","JP_8","TS_1","MOGAS","HYDRANT","BOWSER","TANKER","FOLLOW_ME","MARSHALLER","PPR","EMERGENCY_FLIGHT","MEDICAL_FLIGHT","SAR_FLIGHT","STATE_FLIGHT","CUSTOMS_OFFICIAL_TRAFFIC","ALS","ALSF_2","SDF","ATIS","DATALINK_CLEARANCE","VGSI","PAPI","VASI","GLIDEPATH","GLIDESLOPE","LOCALIZER","RVR_MEASURING_EQUIPMENT","INNER_MARKER","DME","RADIO_ALTIMETER","RNAV_GPS","RADAR","AUTOPILOT","AIRSHOW","MILITARY_ACTIVITY","BLASTING_ACTIVITY","ROCKET_LAUNCH","UAS_ACTIVITY"]},"type":"array","minItems":1},{"items":{"type":"string"},"type":"array","minItems":1}],"title":"Value","description":"Typed clause value. Use comparable measurement objects for quantified values. For non-measurement clause values, always emit a list and use normalized literal tokens or justified raw strings inside that list."},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit","description":"Optional unit."},"details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Details","description":"Optional human-readable clarification."},"schedule":{"anyOf":[{"items":{"$ref":"#/components/schemas/NotamScheduleInterpretationDTO"},"type":"array"},{"type":"null"}],"title":"Schedule","description":"Parsed schedule items that qualify this clause."}},"type":"object","required":["dimension","operator","value"],"title":"AffectedElementClauseDTO"},"ScalarMeasurementValueDTO":{"properties":{"kind":{"type":"string","const":"MEASUREMENT","title":"Kind","default":"MEASUREMENT"},"raw_string":{"type":"string","title":"Raw String"},"value":{"anyOf":[{"type":"integer"},{"type":"number"}],"title":"Value"},"unit":{"type":"string","title":"Unit"}},"type":"object","required":["raw_string","value","unit"],"title":"ScalarMeasurementValueDTO"},"FractionalMeasurementValueDTO":{"properties":{"kind":{"type":"string","const":"FRACTIONAL_MEASUREMENT","title":"Kind","default":"FRACTIONAL_MEASUREMENT"},"raw_string":{"type":"string","title":"Raw String"},"numerator":{"type":"integer","title":"Numerator"},"denominator":{"type":"integer","title":"Denominator"},"unit":{"type":"string","title":"Unit"}},"type":"object","required":["raw_string","numerator","denominator","unit"],"title":"FractionalMeasurementValueDTO"},"GroupedMeasurementValueDTO":{"properties":{"kind":{"type":"string","const":"MEASUREMENTS","title":"Kind","default":"MEASUREMENTS"},"raw_string":{"type":"string","title":"Raw String"},"values":{"items":{"$ref":"#/components/schemas/MeasurementComponentValueDTO"},"type":"array","title":"Values"}},"type":"object","required":["raw_string"],"title":"GroupedMeasurementValueDTO"},"MeasurementComponentValueDTO":{"properties":{"type":{"type":"string","enum":["ALTITUDE","HEIGHT"],"title":"Type"},"value":{"type":"integer","title":"Value"},"unit":{"type":"string","title":"Unit"}},"type":"object","required":["type","value","unit"],"title":"MeasurementComponentValueDTO"},"ProcedureCapabilityDTO":{"properties":{"scheme":{"type":"string","const":"ILS_CATEGORY","title":"Scheme"},"category":{"anyOf":[{"type":"string","enum":["CAT_I","CAT_II","CAT_IIIA","CAT_IIIB","CAT_IIIC"]},{"type":"null"}],"title":"Category"},"level":{"anyOf":[{"type":"string","enum":["LVL_1","LVL_2","LVL_3"]},{"type":"null"}],"title":"Level"},"classification":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Classification"},"source_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Label"}},"type":"object","required":["scheme"],"title":"ProcedureCapabilityDTO"},"NotamScheduleInterpretationDTO":{"properties":{"source":{"type":"string","title":"Source","description":"Source of the schedule interpretation."},"description":{"type":"string","title":"Description","description":"Description of the schedule interpretation."},"rrule":{"type":"string","title":"Rrule","description":"Recurrence rule for the schedule."},"duration_hrs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Hrs","description":"Duration of each recurrence of the schedule period in hours."},"is_sunrise_sunset":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Sunrise Sunset","description":"Indicates if the schedule is based on sunrise/sunset timings."}},"type":"object","required":["source","description","rrule"],"title":"NotamScheduleInterpretationDTO"},"AffectedElementChangeDTO":{"properties":{"subject":{"type":"string","title":"Subject","description":"Structured subject of the change."},"from":{"items":{"anyOf":[{"$ref":"#/components/schemas/ProcedureCapabilityDTO"},{"$ref":"#/components/schemas/ValueDTO"}]},"type":"array","title":"From","description":"Previous or superseded structured operands."},"to":{"items":{"anyOf":[{"$ref":"#/components/schemas/ProcedureCapabilityDTO"},{"$ref":"#/components/schemas/ValueDTO"}]},"type":"array","title":"To","description":"Current or replacement structured operands."},"details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Details","description":"Optional human-readable clarification."},"schedule":{"anyOf":[{"items":{"$ref":"#/components/schemas/NotamScheduleInterpretationDTO"},"type":"array"},{"type":"null"}],"title":"Schedule","description":"Parsed schedule items that qualify this change."}},"type":"object","required":["subject"],"title":"AffectedElementChangeDTO"},"ValueDTO":{"properties":{"kind":{"type":"string","const":"VALUE","title":"Kind","default":"VALUE"},"raw_string":{"type":"string","title":"Raw String"},"values":{"items":{"$ref":"#/components/schemas/ValueComponentDTO"},"type":"array","title":"Values"}},"type":"object","required":["raw_string"],"title":"ValueDTO"},"ValueComponentDTO":{"properties":{"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"value":{"anyOf":[{"type":"integer"},{"type":"string"}],"title":"Value"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit"}},"type":"object","required":["value"],"title":"ValueComponentDTO"},"AffectedElementReferenceDTO":{"properties":{"relation":{"type":"string","title":"Relation","description":"Relation to the referenced object."},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type","description":"Type of the referenced object when available."},"identifier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Identifier","description":"Identifier of the referenced object when available."},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role","description":"Role of this referenced object inside an ordered route when available."},"sequence":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sequence","description":"One-based order of this referenced object inside an ordered route when available."}},"type":"object","required":["relation"],"title":"AffectedElementReferenceDTO"}}},"paths":{"/notams/archive":{"get":{"parameters":[{"description":"Date to check NOTAM validity (YYYY-MM-DD). Cannot be in the future.","required":true,"deprecated":false,"schema":{"type":"string","format":"date","title":"Valid At","description":"Date to check NOTAM validity (YYYY-MM-DD). Cannot be in the future."},"name":"valid_at","in":"query","allowEmptyValue":false,"allowReserved":false},{"description":"List of NOTAM IDs","required":false,"deprecated":false,"schema":{"items":{"type":"string"},"type":"array","title":"Notam Ids","description":"List of NOTAM IDs"},"name":"notam_ids","in":"query","allowEmptyValue":false,"allowReserved":false},{"description":"Whether to always include EST times in the window, even if the notam already expired.","required":false,"deprecated":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Always Include Est","description":"Whether to always include EST times in the window, even if the notam already expired.","default":true},"name":"always_include_est","in":"query","allowEmptyValue":false,"allowReserved":false},{"description":"Page number to retrieve. Defaults to 1.","required":false,"deprecated":false,"schema":{"type":"integer","title":"Page","description":"Page number to retrieve. Defaults to 1.","default":1},"name":"page","in":"query","allowEmptyValue":false,"allowReserved":false},{"description":"Number of NOTAMs per page. Defaults to 30.","required":false,"deprecated":false,"schema":{"type":"integer","maximum":30,"minimum":1,"title":"Per Page","description":"Number of NOTAMs per page. Defaults to 30.","default":30},"name":"per_page","in":"query","allowEmptyValue":false,"allowReserved":false},{"description":"List of 4-character ICAO airport codes or 3-character domestic airport codes. Maximum 5 locations.","required":false,"deprecated":false,"schema":{"items":{"type":"string","maxLength":4,"minLength":3,"pattern":"^[A-Za-z0-9]{3,4}$"},"type":"array","maxItems":5,"minItems":1,"title":"Location","description":"List of 4-character ICAO airport codes or 3-character domestic airport codes. Maximum 5 locations."},"name":"location","in":"query","allowEmptyValue":false,"allowReserved":false},{"description":"Filter by interpretation category(ies). Valid values: ALL, AERODROME, AIRSPACE, NAVIGATION, COMMUNICATION, OPERATIONS, OBSTACLES, ADMINISTRATIVE, WEATHER, SAFETY, OTHER. When 'ALL' is provided, no category filtering is applied. Note: Filtering happens after interpretation; total_count reflects pre-filter count and results may be fewer than per_page.","required":false,"deprecated":false,"schema":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Category","description":"Filter by interpretation category(ies). Valid values: ALL, AERODROME, AIRSPACE, NAVIGATION, COMMUNICATION, OPERATIONS, OBSTACLES, ADMINISTRATIVE, WEATHER, SAFETY, OTHER. When 'ALL' is provided, no category filtering is applied. Note: Filtering happens after interpretation; total_count reflects pre-filter count and results may be fewer than per_page."},"name":"category","in":"query","allowEmptyValue":false,"allowReserved":false},{"description":"Filter by interpretation subcategory(ies). Returns only NOTAMs with matching subcategories. Note: Filtering happens after interpretation; total_count reflects pre-filter count and results may be fewer than per_page.","required":false,"deprecated":false,"schema":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Subcategory","description":"Filter by interpretation subcategory(ies). Returns only NOTAMs with matching subcategories. Note: Filtering happens after interpretation; total_count reflects pre-filter count and results may be fewer than per_page."},"name":"subcategory","in":"query","allowEmptyValue":false,"allowReserved":false},{"description":"Filter by affected element effect and/or type. Format: 'effect:closed,type:runway' or 'closed runway' or 'closed' or 'runway'. Valid effects: CLOSED, RESTRICTED, HAZARD, UNSERVICEABLE, WORK_IN_PROGRESS, CAUTION. Valid types: AERODROME, RUNWAY, TAXIWAY, APPROACH, NAVAID, AIRSPACE, ROUTE, APRON, LIGHTING, SERVICE, PROCEDURE, OTHER. Note: Filtering happens after interpretation; total_count reflects pre-filter count and results may be fewer than per_page.","required":false,"deprecated":false,"schema":{"anyOf":[{"items":{"$ref":"#/components/schemas/AffectedElementFilter"},"type":"array"},{"type":"null"}],"title":"Affected Element","description":"Filter by affected element effect and/or type. Format: 'effect:closed,type:runway' or 'closed runway' or 'closed' or 'runway'. Valid effects: CLOSED, RESTRICTED, HAZARD, UNSERVICEABLE, WORK_IN_PROGRESS, CAUTION. Valid types: AERODROME, RUNWAY, TAXIWAY, APPROACH, NAVAID, AIRSPACE, ROUTE, APRON, LIGHTING, SERVICE, PROCEDURE, OTHER. Note: Filtering happens after interpretation; total_count reflects pre-filter count and results may be fewer than per_page."},"name":"affected_element","in":"query","allowEmptyValue":false,"allowReserved":false}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotamListResult"}}}},"404":{"description":"Archive snapshot not found for the requested search. Credits were not deducted for this request.","content":{"application/json":{"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}}}},"deprecated":false}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://skymerse.gitbook.io/notamify-api/historical-notams-endpoint.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
