{
	"openapi": "3.1.0",
	"info": {
		"title": "Everytownland",
		"version": "0.1.0",
		"summary": "Land in Ireland, townland by townland, in JSON. No key, no account.",
		"description": "Every land parcel in Ireland, townland by townland: its map, its area, its zoning and planning applications, and the price of every home sold around it.\nRead from the public services when called: Tailte Éireann, the Department of Housing, Local Government and Heritage, the National Parks and Wildlife Service, the National Monuments Service, the National Inventory of Architectural Heritage and the Residential Property Price Register. No owner and no planning applicant is ever served.\n\nThe same facts are served in Markdown by the .md twin of each page and by an MCP server at https://everytownland.com/mcp.",
		"contact": {
			"name": "Everytownland",
			"url": "https://everytownland.com"
		},
		"x-stability": "Additive: a field may appear, none disappears or changes meaning under a caller, and an address does not move. No version number anywhere.",
		"x-rate-limit": {
			"limit": 30,
			"window_seconds": 60,
			"scope": "Per IP address, on /api/ and the MCP server, counted per Cloudflare location. The pages and their Markdown twins are not limited.",
			"headers": "RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset (relative seconds), with Retry-After, on the 429 only: every response passes through Cloudflare, where they would be wrong."
		}
	},
	"servers": [
		{
			"url": "https://everytownland.com/api"
		}
	],
	"externalDocs": {
		"description": "The documentation.",
		"url": "https://everytownland.com/api"
	},
	"security": [],
	"x-mcp": {
		"endpoint": "https://everytownland.com/mcp",
		"server": "everytownland",
		"protocol_versions": [
			"2026-07-28",
			"2025-11-25",
			"2025-06-18",
			"2025-03-26"
		],
		"tools": [
			"search_irish_places",
			"get_irish_townland",
			"get_irish_street",
			"get_irish_land_parcel",
			"get_irish_parcel_at_point",
			"get_irish_civil_parish",
			"get_irish_county"
		]
	},
	"paths": {
		"/townland/{county}/{townland}": {
			"get": {
				"operationId": "getTownland",
				"summary": "A townland: its registered freehold parcels, zoning, planning applications, heritage, homes sold, civil parish, barony, electoral division and neighbours.",
				"parameters": [
					{
						"name": "county",
						"in": "path",
						"required": true,
						"description": "One of the 26 counties of the Republic of Ireland, as in the address of its page: westmeath. \"Westmeath\" and \"Co. Westmeath\" are read too.",
						"schema": {
							"type": "string"
						},
						"example": "westmeath"
					},
					{
						"name": "townland",
						"in": "path",
						"required": true,
						"description": "The segment of its page (golden-island) or its name (Golden Island). A name the county carries several times answers 404 with the homonyms in candidates.",
						"schema": {
							"type": "string"
						},
						"example": "golden-island"
					}
				],
				"responses": {
					"200": {
						"description": "The townland exists. A source that did not answer leaves its field null.",
						"headers": {
							"ETag": {
								"schema": {
									"type": "string"
								},
								"description": "Weak. If-None-Match is honoured, as a list and with the wildcard."
							},
							"Link": {
								"schema": {
									"type": "string"
								},
								"description": "service-desc and service-doc; next and prev on a paginated collection."
							}
						},
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/Townland"
								}
							}
						}
					},
					"304": {
						"description": "Nothing changed since the ETag sent."
					},
					"404": {
						"description": "No such county, or no townland of that name in it.",
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/Problem"
								}
							}
						}
					},
					"429": {
						"description": "More than 30 requests in a minute from this address. Wait retry-after seconds.",
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/Problem"
								}
							}
						},
						"headers": {
							"Retry-After": {
								"schema": {
									"type": "integer"
								}
							},
							"RateLimit-Limit": {
								"schema": {
									"type": "integer"
								}
							},
							"RateLimit-Remaining": {
								"schema": {
									"type": "integer"
								}
							},
							"RateLimit-Reset": {
								"schema": {
									"type": "integer"
								},
								"description": "Seconds, relative."
							}
						}
					}
				}
			}
		},
		"/street/{county}/{street}": {
			"get": {
				"operationId": "getStreet",
				"summary": "A street or housing estate of the Property Price Register: the registered freehold parcels within 15 m of the street or in the estate, their zoning, the planning applications along it, the townlands it runs through, every recorded sale, the median price by year and the estimate.",
				"parameters": [
					{
						"name": "county",
						"in": "path",
						"required": true,
						"description": "One of the 26 counties of the Republic of Ireland, as in the address of its page: westmeath. \"Westmeath\" and \"Co. Westmeath\" are read too.",
						"schema": {
							"type": "string"
						},
						"example": "westmeath"
					},
					{
						"name": "street",
						"in": "path",
						"required": true,
						"description": "The segment of its page (ballymahon-road-athlone), or its name and locality (Ballymahon Road, Athlone). A name alone the county carries in several localities answers 404 with each in candidates.",
						"schema": {
							"type": "string"
						},
						"example": "ballymahon-road-athlone"
					}
				],
				"responses": {
					"200": {
						"description": "The street has five sales or more in the register. A source that did not answer leaves its field null.",
						"headers": {
							"ETag": {
								"schema": {
									"type": "string"
								},
								"description": "Weak. If-None-Match is honoured, as a list and with the wildcard."
							},
							"Link": {
								"schema": {
									"type": "string"
								},
								"description": "service-desc and service-doc; next and prev on a paginated collection."
							}
						},
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/Street"
								}
							}
						}
					},
					"304": {
						"description": "Nothing changed since the ETag sent."
					},
					"404": {
						"description": "No such county, or no street of that name in it.",
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/Problem"
								}
							}
						}
					},
					"429": {
						"description": "More than 30 requests in a minute from this address. Wait retry-after seconds.",
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/Problem"
								}
							}
						},
						"headers": {
							"Retry-After": {
								"schema": {
									"type": "integer"
								}
							},
							"RateLimit-Limit": {
								"schema": {
									"type": "integer"
								}
							},
							"RateLimit-Remaining": {
								"schema": {
									"type": "integer"
								}
							},
							"RateLimit-Reset": {
								"schema": {
									"type": "integer"
								},
								"description": "Seconds, relative."
							}
						}
					}
				}
			}
		},
		"/parcel/{id}": {
			"get": {
				"operationId": "getParcel",
				"summary": "A registered freehold parcel by its Tailte Éireann number, and what the page says of it.",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"description": "The SP_ID of Tailte Éireann, digits only.",
						"schema": {
							"type": "string",
							"pattern": "^[0-9]{1,12}$"
						},
						"example": "2755835"
					}
				],
				"responses": {
					"200": {
						"description": "The parcel exists in the file of Tailte Éireann.",
						"headers": {
							"ETag": {
								"schema": {
									"type": "string"
								},
								"description": "Weak. If-None-Match is honoured, as a list and with the wildcard."
							},
							"Link": {
								"schema": {
									"type": "string"
								},
								"description": "service-desc and service-doc; next and prev on a paginated collection."
							}
						},
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/Parcel"
								}
							}
						}
					},
					"304": {
						"description": "Nothing changed since the ETag sent."
					},
					"400": {
						"description": "The id is not a number.",
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/Problem"
								}
							}
						}
					},
					"404": {
						"description": "No parcel carries this number.",
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/Problem"
								}
							}
						}
					},
					"429": {
						"description": "More than 30 requests in a minute from this address. Wait retry-after seconds.",
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/Problem"
								}
							}
						},
						"headers": {
							"Retry-After": {
								"schema": {
									"type": "integer"
								}
							},
							"RateLimit-Limit": {
								"schema": {
									"type": "integer"
								}
							},
							"RateLimit-Remaining": {
								"schema": {
									"type": "integer"
								}
							},
							"RateLimit-Reset": {
								"schema": {
									"type": "integer"
								},
								"description": "Seconds, relative."
							}
						}
					},
					"503": {
						"description": "Tailte Éireann did not answer. Retry after retry-after seconds.",
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/Problem"
								}
							}
						}
					}
				}
			}
		},
		"/point": {
			"get": {
				"operationId": "getPoint",
				"summary": "The parcel containing a position, or the nearest by its edge within 60 m, and the townland there.",
				"parameters": [
					{
						"name": "lon",
						"in": "query",
						"required": true,
						"schema": {
							"type": "number",
							"minimum": -180,
							"maximum": 180
						},
						"example": -7.9352
					},
					{
						"name": "lat",
						"in": "query",
						"required": true,
						"schema": {
							"type": "number",
							"minimum": -90,
							"maximum": 90
						},
						"example": 53.4119
					}
				],
				"responses": {
					"200": {
						"description": "What lies at the position; parcel and townland are null where there is none. Never stored (no-store).",
						"headers": {
							"ETag": {
								"schema": {
									"type": "string"
								},
								"description": "Weak. If-None-Match is honoured, as a list and with the wildcard."
							},
							"Link": {
								"schema": {
									"type": "string"
								},
								"description": "service-desc and service-doc; next and prev on a paginated collection."
							}
						},
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/Point"
								}
							}
						}
					},
					"400": {
						"description": "lon or lat is missing or not a number.",
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/Problem"
								}
							}
						}
					},
					"429": {
						"description": "More than 30 requests in a minute from this address. Wait retry-after seconds.",
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/Problem"
								}
							}
						},
						"headers": {
							"Retry-After": {
								"schema": {
									"type": "integer"
								}
							},
							"RateLimit-Limit": {
								"schema": {
									"type": "integer"
								}
							},
							"RateLimit-Remaining": {
								"schema": {
									"type": "integer"
								}
							},
							"RateLimit-Reset": {
								"schema": {
									"type": "integer"
								},
								"description": "Seconds, relative."
							}
						}
					},
					"503": {
						"description": "Tailte Éireann did not answer.",
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/Problem"
								}
							}
						}
					}
				}
			}
		},
		"/parish/{county}/{parish}": {
			"get": {
				"operationId": "getCivilParish",
				"summary": "A civil parish within a county: its baronies and every townland A to Z.",
				"parameters": [
					{
						"name": "county",
						"in": "path",
						"required": true,
						"description": "One of the 26 counties of the Republic of Ireland, as in the address of its page: westmeath. \"Westmeath\" and \"Co. Westmeath\" are read too.",
						"schema": {
							"type": "string"
						},
						"example": "westmeath"
					},
					{
						"name": "parish",
						"in": "path",
						"required": true,
						"description": "The segment of its page or its name.",
						"schema": {
							"type": "string"
						},
						"example": "multyfarnham"
					}
				],
				"responses": {
					"200": {
						"description": "The civil parish has townlands in this county.",
						"headers": {
							"ETag": {
								"schema": {
									"type": "string"
								},
								"description": "Weak. If-None-Match is honoured, as a list and with the wildcard."
							},
							"Link": {
								"schema": {
									"type": "string"
								},
								"description": "service-desc and service-doc; next and prev on a paginated collection."
							}
						},
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/CivilParish"
								}
							}
						}
					},
					"304": {
						"description": "Nothing changed since the ETag sent."
					},
					"404": {
						"description": "No such county, or no civil parish of that name in it.",
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/Problem"
								}
							}
						}
					},
					"429": {
						"description": "More than 30 requests in a minute from this address. Wait retry-after seconds.",
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/Problem"
								}
							}
						},
						"headers": {
							"Retry-After": {
								"schema": {
									"type": "integer"
								}
							},
							"RateLimit-Limit": {
								"schema": {
									"type": "integer"
								}
							},
							"RateLimit-Remaining": {
								"schema": {
									"type": "integer"
								}
							},
							"RateLimit-Reset": {
								"schema": {
									"type": "integer"
								},
								"description": "Seconds, relative."
							}
						}
					}
				}
			}
		},
		"/county/{county}": {
			"get": {
				"operationId": "getCounty",
				"summary": "A county: its civil parishes, where most homes sold, its median prices by year.",
				"parameters": [
					{
						"name": "county",
						"in": "path",
						"required": true,
						"description": "One of the 26 counties of the Republic of Ireland, as in the address of its page: westmeath. \"Westmeath\" and \"Co. Westmeath\" are read too.",
						"schema": {
							"type": "string"
						},
						"example": "westmeath"
					}
				],
				"responses": {
					"200": {
						"description": "The county.",
						"headers": {
							"ETag": {
								"schema": {
									"type": "string"
								},
								"description": "Weak. If-None-Match is honoured, as a list and with the wildcard."
							},
							"Link": {
								"schema": {
									"type": "string"
								},
								"description": "service-desc and service-doc; next and prev on a paginated collection."
							}
						},
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/County"
								}
							}
						}
					},
					"304": {
						"description": "Nothing changed since the ETag sent."
					},
					"404": {
						"description": "Not one of the 26 counties.",
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/Problem"
								}
							}
						}
					},
					"429": {
						"description": "More than 30 requests in a minute from this address. Wait retry-after seconds.",
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/Problem"
								}
							}
						},
						"headers": {
							"Retry-After": {
								"schema": {
									"type": "integer"
								}
							},
							"RateLimit-Limit": {
								"schema": {
									"type": "integer"
								}
							},
							"RateLimit-Remaining": {
								"schema": {
									"type": "integer"
								}
							},
							"RateLimit-Reset": {
								"schema": {
									"type": "integer"
								},
								"description": "Seconds, relative."
							}
						}
					}
				}
			}
		},
		"/county/{county}/townlands": {
			"get": {
				"operationId": "listTownlands",
				"summary": "The townlands of a county, A to Z, by pages.",
				"parameters": [
					{
						"name": "county",
						"in": "path",
						"required": true,
						"description": "One of the 26 counties of the Republic of Ireland, as in the address of its page: westmeath. \"Westmeath\" and \"Co. Westmeath\" are read too.",
						"schema": {
							"type": "string"
						},
						"example": "westmeath"
					},
					{
						"name": "limit",
						"in": "query",
						"schema": {
							"type": "integer",
							"default": 1000,
							"maximum": 12000
						},
						"description": "Unreadable, it falls back to the default."
					},
					{
						"name": "offset",
						"in": "query",
						"schema": {
							"type": "integer",
							"default": 0
						},
						"description": "Beyond the end, the list is empty and more is false: never 404."
					}
				],
				"responses": {
					"200": {
						"description": "The page asked for, with page.total and the absolute addresses of the next and previous pages.",
						"headers": {
							"ETag": {
								"schema": {
									"type": "string"
								},
								"description": "Weak. If-None-Match is honoured, as a list and with the wildcard."
							},
							"Link": {
								"schema": {
									"type": "string"
								},
								"description": "service-desc and service-doc; next and prev on a paginated collection."
							}
						},
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/Townlands"
								}
							}
						}
					},
					"304": {
						"description": "Nothing changed since the ETag sent."
					},
					"404": {
						"description": "Not one of the 26 counties.",
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/Problem"
								}
							}
						}
					},
					"429": {
						"description": "More than 30 requests in a minute from this address. Wait retry-after seconds.",
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/Problem"
								}
							}
						},
						"headers": {
							"Retry-After": {
								"schema": {
									"type": "integer"
								}
							},
							"RateLimit-Limit": {
								"schema": {
									"type": "integer"
								}
							},
							"RateLimit-Remaining": {
								"schema": {
									"type": "integer"
								}
							},
							"RateLimit-Reset": {
								"schema": {
									"type": "integer"
								},
								"description": "Seconds, relative."
							}
						}
					}
				}
			}
		},
		"/search": {
			"get": {
				"operationId": "search",
				"summary": "Townlands, and streets or estates with five sales or more in the Property Price Register, matching a name; or the place whose sale carries an Eircode.",
				"parameters": [
					{
						"name": "q",
						"in": "query",
						"required": true,
						"schema": {
							"type": "string",
							"minLength": 2
						},
						"example": "golden island"
					}
				],
				"responses": {
					"200": {
						"description": "The matches, the closest first; an empty list is an answer.",
						"headers": {
							"ETag": {
								"schema": {
									"type": "string"
								},
								"description": "Weak. If-None-Match is honoured, as a list and with the wildcard."
							},
							"Link": {
								"schema": {
									"type": "string"
								},
								"description": "service-desc and service-doc; next and prev on a paginated collection."
							}
						},
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/Search"
								}
							}
						}
					},
					"304": {
						"description": "Nothing changed since the ETag sent."
					},
					"400": {
						"description": "q is missing or shorter than two characters.",
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/Problem"
								}
							}
						}
					},
					"429": {
						"description": "More than 30 requests in a minute from this address. Wait retry-after seconds.",
						"content": {
							"application/problem+json": {
								"schema": {
									"$ref": "#/components/schemas/Problem"
								}
							}
						},
						"headers": {
							"Retry-After": {
								"schema": {
									"type": "integer"
								}
							},
							"RateLimit-Limit": {
								"schema": {
									"type": "integer"
								}
							},
							"RateLimit-Remaining": {
								"schema": {
									"type": "integer"
								}
							},
							"RateLimit-Reset": {
								"schema": {
									"type": "integer"
								},
								"description": "Seconds, relative."
							}
						}
					}
				}
			}
		}
	},
	"components": {
		"schemas": {
			"Money": {
				"type": "object",
				"required": [
					"value",
					"currency"
				],
				"properties": {
					"value": {
						"type": "number"
					},
					"currency": {
						"type": "string",
						"example": "EUR"
					}
				}
			},
			"Zone": {
				"type": "object",
				"properties": {
					"code": {
						"type": [
							"string",
							"null"
						],
						"description": "The harmonised national code (R2)."
					},
					"name": {
						"type": [
							"string",
							"null"
						],
						"description": "The zone as the plan names it."
					},
					"meaning": {
						"type": [
							"string",
							"null"
						]
					},
					"plan": {
						"type": [
							"string",
							"null"
						]
					},
					"authority": {
						"type": [
							"string",
							"null"
						]
					},
					"objective_url": {
						"type": [
							"string",
							"null"
						],
						"format": "uri"
					},
					"parcels": {
						"type": [
							"integer",
							"null"
						],
						"description": "On a townland: the parcels whose centre lies in the zone."
					}
				}
			},
			"PlanningApplication": {
				"type": "object",
				"properties": {
					"authority": {
						"type": "string"
					},
					"reference": {
						"type": "string"
					},
					"received": {
						"type": [
							"string",
							"null"
						],
						"format": "date"
					},
					"decided": {
						"type": [
							"string",
							"null"
						],
						"format": "date"
					},
					"decision": {
						"type": [
							"string",
							"null"
						]
					},
					"status": {
						"type": [
							"string",
							"null"
						]
					},
					"type": {
						"type": [
							"string",
							"null"
						]
					},
					"description": {
						"type": [
							"string",
							"null"
						]
					},
					"address": {
						"type": [
							"string",
							"null"
						]
					},
					"homes": {
						"type": "integer"
					},
					"file_url": {
						"type": [
							"string",
							"null"
						],
						"format": "uri"
					}
				}
			},
			"Townland": {
				"type": "object",
				"required": [
					"url",
					"complete",
					"townland",
					"page_url",
					"markdown_url"
				],
				"properties": {
					"url": {
						"type": "string",
						"format": "uri"
					},
					"complete": {
						"type": "boolean",
						"description": "false when a source did not answer: its field is null, and the response is served with no-store."
					},
					"townland": {
						"type": "object"
					},
					"boundary": {
						"type": "string",
						"enum": [
							"drawn",
							"not_drawn",
							"unavailable"
						]
					},
					"land_parcels": {
						"type": [
							"object",
							"null"
						],
						"description": "The parcels whose centre lies in the townland, largest first; touching_only counts those that only touch it. too_many: more than 2,000 touch it, beyond one answer of Tailte Éireann."
					},
					"zoning": {
						"type": [
							"array",
							"null"
						],
						"description": "Zones of the development plans (national zoning, MyPlan). On a townland, ranked by the parcels whose centre lies in each. null when the service did not answer; an empty list outside zoned settlements.",
						"items": {
							"$ref": "#/components/schemas/Zone"
						}
					},
					"planning": {
						"type": [
							"object",
							"null"
						],
						"description": "Planning applications whose site touches the land, newest first (National Planning Applications). The service returns the 100 most recent: truncated says the list may hide older ones. Applicants are never served.",
						"properties": {
							"limit": {
								"type": "integer"
							},
							"truncated": {
								"type": "boolean"
							},
							"applications": {
								"type": "array",
								"items": {
									"$ref": "#/components/schemas/PlanningApplication"
								}
							}
						}
					},
					"designated_sites": {
						"type": [
							"array",
							"null"
						],
						"items": {
							"type": "object"
						},
						"description": "SAC, SPA, NHA and proposed NHA touching the land (National Parks and Wildlife Service). null when the service did not answer."
					},
					"recorded_monuments": {
						"type": [
							"array",
							"null"
						],
						"items": {
							"type": "object"
						},
						"description": "Recorded monuments lying in the townland (Sites and Monuments Record)."
					},
					"architectural_heritage": {
						"type": [
							"array",
							"null"
						],
						"items": {
							"type": "object"
						},
						"description": "Buildings of the National Inventory of Architectural Heritage standing on the land."
					},
					"ground": {
						"type": [
							"object",
							"null"
						],
						"description": "Ground and risks. radon: the EPA estimate at the centre (Radon Risk Map of Ireland), mapped false where the map has no square there; landslide_susceptibility: the classes of the Geological Survey 1:50,000 map touching the land; lidar: the Office of Public Works tile under the centre, covered false where no survey was flown; flood_maps_url: the OPW flood maps, linked only (CC BY-NC-ND). Each part is null when its service did not answer.",
						"properties": {
							"radon": {
								"type": [
									"object",
									"null"
								]
							},
							"landslide_susceptibility": {
								"type": [
									"array",
									"null"
								],
								"items": {
									"type": "string"
								}
							},
							"lidar": {
								"type": [
									"object",
									"null"
								]
							},
							"flood_maps_url": {
								"type": "string",
								"format": "uri"
							}
						}
					},
					"census_2022": {
						"type": [
							"object",
							"null"
						],
						"description": "The 2022 census of its electoral division (Central Statistics Office), as counts: population, households, houses, apartments, dwellings, vacant dwellings and holiday homes on census night, homes built since 2001 and before 1919 over those whose year is stated, owner-occupied and rented households over those whose tenure is stated. null where the register holds none."
					},
					"downloads": {
						"type": [
							"object",
							"null"
						],
						"properties": {
							"dxf": {
								"type": "string",
								"format": "uri",
								"description": "Irish Transverse Mercator metres, with its boundary, parcels and buildings."
							},
							"geojson": {
								"type": "string",
								"format": "uri",
								"description": "WGS 84."
							},
							"kml": {
								"type": "string",
								"format": "uri",
								"description": "For Google Earth."
							}
						}
					},
					"places_of_the_register": {
						"type": [
							"array",
							"null"
						],
						"items": {
							"type": "object"
						},
						"description": "Streets and places of the Property Price Register that bear its name, with their sales."
					},
					"neighbouring_townlands": {
						"type": [
							"array",
							"null"
						],
						"items": {
							"type": "object"
						},
						"description": "Townlands touching it that have a page."
					},
					"page_url": {
						"type": "string",
						"format": "uri"
					},
					"markdown_url": {
						"type": "string",
						"format": "uri"
					},
					"source": {
						"type": "string",
						"description": "Where the DATA comes from. A citation copies this sentence."
					},
					"served_by": {
						"type": "object",
						"properties": {
							"name": {
								"type": "string"
							},
							"url": {
								"type": "string",
								"format": "uri"
							}
						}
					},
					"terms": {
						"type": "string"
					},
					"documentation": {
						"type": "string",
						"format": "uri"
					},
					"notice": {
						"type": "string",
						"description": "What a consumer cannot guess: no owner and no planning applicant is ever served."
					}
				}
			},
			"Street": {
				"type": "object",
				"required": [
					"url",
					"complete",
					"place",
					"land",
					"prices",
					"sales",
					"page_url",
					"markdown_url"
				],
				"properties": {
					"url": {
						"type": "string",
						"format": "uri"
					},
					"complete": {
						"type": "boolean",
						"description": "false when a source did not answer: its field is null, and the response is served with no-store."
					},
					"place": {
						"type": "object",
						"description": "Its name and locality as the register writes them, its county, its kind on OpenStreetMap (street, estate, townland, locality; null where it was not placed) and its position there."
					},
					"land": {
						"type": "object",
						"description": "Where its land is read: along the line of the street, within 15 m, or inside the outline of the estate. read is false for a place with no line on the map, and reason says why; land_parcels, zoning, planning and townlands are then null.",
						"properties": {
							"read": {
								"type": "boolean"
							},
							"along": {
								"type": [
									"string",
									"null"
								],
								"enum": [
									"street_line",
									"estate_outline",
									null
								]
							},
							"within_m": {
								"type": [
									"integer",
									"null"
								]
							},
							"reason": {
								"type": [
									"string",
									"null"
								]
							}
						}
					},
					"land_parcels": {
						"type": [
							"object",
							"null"
						],
						"description": "The registered freehold parcels along it, largest first (Tailte Éireann). too_many: more than 2,000, beyond one answer."
					},
					"zoning": {
						"type": [
							"array",
							"null"
						],
						"description": "Zones of the development plans (national zoning, MyPlan). On a townland, ranked by the parcels whose centre lies in each. null when the service did not answer; an empty list outside zoned settlements.",
						"items": {
							"$ref": "#/components/schemas/Zone"
						}
					},
					"planning": {
						"type": [
							"object",
							"null"
						],
						"description": "Planning applications whose site touches the land, newest first (National Planning Applications). The service returns the 100 most recent: truncated says the list may hide older ones. Applicants are never served.",
						"properties": {
							"limit": {
								"type": "integer"
							},
							"truncated": {
								"type": "boolean"
							},
							"applications": {
								"type": "array",
								"items": {
									"$ref": "#/components/schemas/PlanningApplication"
								}
							}
						}
					},
					"townlands": {
						"type": [
							"array",
							"null"
						],
						"items": {
							"type": "object"
						},
						"description": "The townlands of its county it runs through or lies in, that have a page (Tailte Éireann)."
					},
					"townland_of_the_same_name": {
						"type": [
							"object",
							"null"
						],
						"description": "For a place OpenStreetMap places as a townland: the townland of its county bearing its name, when only one does."
					},
					"prices": {
						"type": "object",
						"description": "Residential Property Price Register, market sales only: the median since median_since from median_needs sales, and by year from three, the oldest first."
					},
					"estimate": {
						"type": [
							"object",
							"null"
						],
						"description": "The estimate of its page for a second-hand home of the type most of its sales are: a price, and the ranges where one sale in two and eight in ten fall. Computed from past sales, not a valuation. null where nothing carries it."
					},
					"sales": {
						"type": "array",
						"description": "Every recorded sale since 2010, newest first, the address as the register writes it. full_market_price false: left out of every median.",
						"items": {
							"type": "object"
						}
					},
					"page_url": {
						"type": "string",
						"format": "uri"
					},
					"markdown_url": {
						"type": "string",
						"format": "uri"
					},
					"source": {
						"type": "string",
						"description": "Where the DATA comes from. A citation copies this sentence."
					},
					"served_by": {
						"type": "object",
						"properties": {
							"name": {
								"type": "string"
							},
							"url": {
								"type": "string",
								"format": "uri"
							}
						}
					},
					"terms": {
						"type": "string"
					},
					"documentation": {
						"type": "string",
						"format": "uri"
					},
					"notice": {
						"type": "string",
						"description": "What a consumer cannot guess: no owner and no planning applicant is ever served."
					}
				}
			},
			"Parcel": {
				"type": "object",
				"required": [
					"url",
					"complete",
					"parcel",
					"page_url",
					"markdown_url"
				],
				"properties": {
					"url": {
						"type": "string",
						"format": "uri"
					},
					"complete": {
						"type": "boolean",
						"description": "false when a source did not answer: its field is null, and the response is served with no-store."
					},
					"parcel": {
						"type": "object",
						"properties": {
							"id": {
								"type": "string",
								"description": "The SP_ID of Tailte Éireann."
							},
							"area_m2": {
								"type": "integer",
								"description": "As Tailte Éireann measures it (Shape__Area)."
							},
							"outline": {
								"type": "array",
								"description": "Rings of [lon, lat], WGS 84."
							},
							"outline_crs": {
								"type": "string"
							}
						}
					},
					"townland": {
						"type": [
							"object",
							"null"
						],
						"description": "The townland at the centre of the parcel. url, page_url and markdown_url are null where the site has no page for it; the whole field is null where no townland is drawn, as in the centres of Dublin, Cork and Galway."
					},
					"buildings": {
						"type": [
							"object",
							"null"
						],
						"properties": {
							"count": {
								"type": "integer"
							},
							"footprint_m2": {
								"type": "integer"
							}
						}
					},
					"zoning": {
						"type": [
							"array",
							"null"
						],
						"description": "Zones of the development plans (national zoning, MyPlan). On a townland, ranked by the parcels whose centre lies in each. null when the service did not answer; an empty list outside zoned settlements.",
						"items": {
							"$ref": "#/components/schemas/Zone"
						}
					},
					"planning": {
						"type": [
							"object",
							"null"
						],
						"description": "Planning applications whose site touches the land, newest first (National Planning Applications). The service returns the 100 most recent: truncated says the list may hide older ones. Applicants are never served.",
						"properties": {
							"limit": {
								"type": "integer"
							},
							"truncated": {
								"type": "boolean"
							},
							"applications": {
								"type": "array",
								"items": {
									"$ref": "#/components/schemas/PlanningApplication"
								}
							}
						}
					},
					"designated_sites": {
						"type": [
							"array",
							"null"
						],
						"items": {
							"type": "object"
						},
						"description": "SAC, SPA, NHA and proposed NHA touching the land (National Parks and Wildlife Service). null when the service did not answer."
					},
					"recorded_monuments_by_zone_of_notification": {
						"type": [
							"array",
							"null"
						],
						"items": {
							"type": "object"
						},
						"description": "Recorded monuments whose zone of notification touches the parcel (Sites and Monuments Record)."
					},
					"architectural_heritage": {
						"type": [
							"array",
							"null"
						],
						"items": {
							"type": "object"
						},
						"description": "Buildings of the National Inventory of Architectural Heritage standing on the land."
					},
					"ground": {
						"type": [
							"object",
							"null"
						],
						"description": "Ground and risks. radon: the EPA estimate at the centre (Radon Risk Map of Ireland), mapped false where the map has no square there; landslide_susceptibility: the classes of the Geological Survey 1:50,000 map touching the land; lidar: the Office of Public Works tile under the centre, covered false where no survey was flown; flood_maps_url: the OPW flood maps, linked only (CC BY-NC-ND). Each part is null when its service did not answer.",
						"properties": {
							"radon": {
								"type": [
									"object",
									"null"
								]
							},
							"landslide_susceptibility": {
								"type": [
									"array",
									"null"
								],
								"items": {
									"type": "string"
								}
							},
							"lidar": {
								"type": [
									"object",
									"null"
								]
							},
							"flood_maps_url": {
								"type": "string",
								"format": "uri"
							}
						}
					},
					"neighbouring_parcels_within_25m": {
						"type": [
							"array",
							"null"
						],
						"items": {
							"type": "object"
						},
						"description": "Other parcels within 25 m, with their addresses."
					},
					"downloads": {
						"type": "object",
						"properties": {
							"dxf": {
								"type": "string",
								"format": "uri",
								"description": "Irish Transverse Mercator metres, with its neighbours and buildings."
							},
							"geojson": {
								"type": "string",
								"format": "uri",
								"description": "WGS 84."
							},
							"kml": {
								"type": "string",
								"format": "uri",
								"description": "For Google Earth."
							}
						}
					},
					"page_url": {
						"type": "string",
						"format": "uri"
					},
					"markdown_url": {
						"type": "string",
						"format": "uri"
					},
					"source": {
						"type": "string",
						"description": "Where the DATA comes from. A citation copies this sentence."
					},
					"served_by": {
						"type": "object",
						"properties": {
							"name": {
								"type": "string"
							},
							"url": {
								"type": "string",
								"format": "uri"
							}
						}
					},
					"terms": {
						"type": "string"
					},
					"documentation": {
						"type": "string",
						"format": "uri"
					},
					"notice": {
						"type": "string",
						"description": "What a consumer cannot guess: no owner and no planning applicant is ever served."
					}
				}
			},
			"Point": {
				"type": "object",
				"properties": {
					"url": {
						"type": "string",
						"format": "uri"
					},
					"complete": {
						"type": "boolean",
						"description": "false when a source did not answer: its field is null, and the response is served with no-store."
					},
					"point": {
						"type": "object"
					},
					"radius_m": {
						"type": "integer"
					},
					"match": {
						"type": [
							"object",
							"null"
						],
						"properties": {
							"parcel_id": {
								"type": "string"
							},
							"contains_point": {
								"type": "boolean"
							},
							"distance_m": {
								"type": "number",
								"description": "To the edge of the parcel; 0 inside."
							}
						}
					},
					"townland": {
						"type": [
							"object",
							"null"
						]
					},
					"parcel": {
						"oneOf": [
							{
								"type": "object",
								"properties": {
									"complete": {
										"type": "boolean",
										"description": "false when a source did not answer: its field is null, and the response is served with no-store."
									},
									"parcel": {
										"type": "object",
										"properties": {
											"id": {
												"type": "string",
												"description": "The SP_ID of Tailte Éireann."
											},
											"area_m2": {
												"type": "integer",
												"description": "As Tailte Éireann measures it (Shape__Area)."
											},
											"outline": {
												"type": "array",
												"description": "Rings of [lon, lat], WGS 84."
											},
											"outline_crs": {
												"type": "string"
											}
										}
									},
									"townland": {
										"type": [
											"object",
											"null"
										],
										"description": "The townland at the centre of the parcel. url, page_url and markdown_url are null where the site has no page for it; the whole field is null where no townland is drawn, as in the centres of Dublin, Cork and Galway."
									},
									"buildings": {
										"type": [
											"object",
											"null"
										],
										"properties": {
											"count": {
												"type": "integer"
											},
											"footprint_m2": {
												"type": "integer"
											}
										}
									},
									"zoning": {
										"type": [
											"array",
											"null"
										],
										"description": "Zones of the development plans (national zoning, MyPlan). On a townland, ranked by the parcels whose centre lies in each. null when the service did not answer; an empty list outside zoned settlements.",
										"items": {
											"$ref": "#/components/schemas/Zone"
										}
									},
									"planning": {
										"type": [
											"object",
											"null"
										],
										"description": "Planning applications whose site touches the land, newest first (National Planning Applications). The service returns the 100 most recent: truncated says the list may hide older ones. Applicants are never served.",
										"properties": {
											"limit": {
												"type": "integer"
											},
											"truncated": {
												"type": "boolean"
											},
											"applications": {
												"type": "array",
												"items": {
													"$ref": "#/components/schemas/PlanningApplication"
												}
											}
										}
									},
									"designated_sites": {
										"type": [
											"array",
											"null"
										],
										"items": {
											"type": "object"
										},
										"description": "SAC, SPA, NHA and proposed NHA touching the land (National Parks and Wildlife Service). null when the service did not answer."
									},
									"recorded_monuments_by_zone_of_notification": {
										"type": [
											"array",
											"null"
										],
										"items": {
											"type": "object"
										},
										"description": "Recorded monuments whose zone of notification touches the parcel (Sites and Monuments Record)."
									},
									"architectural_heritage": {
										"type": [
											"array",
											"null"
										],
										"items": {
											"type": "object"
										},
										"description": "Buildings of the National Inventory of Architectural Heritage standing on the land."
									},
									"ground": {
										"type": [
											"object",
											"null"
										],
										"description": "Ground and risks. radon: the EPA estimate at the centre (Radon Risk Map of Ireland), mapped false where the map has no square there; landslide_susceptibility: the classes of the Geological Survey 1:50,000 map touching the land; lidar: the Office of Public Works tile under the centre, covered false where no survey was flown; flood_maps_url: the OPW flood maps, linked only (CC BY-NC-ND). Each part is null when its service did not answer.",
										"properties": {
											"radon": {
												"type": [
													"object",
													"null"
												]
											},
											"landslide_susceptibility": {
												"type": [
													"array",
													"null"
												],
												"items": {
													"type": "string"
												}
											},
											"lidar": {
												"type": [
													"object",
													"null"
												]
											},
											"flood_maps_url": {
												"type": "string",
												"format": "uri"
											}
										}
									},
									"neighbouring_parcels_within_25m": {
										"type": [
											"array",
											"null"
										],
										"items": {
											"type": "object"
										},
										"description": "Other parcels within 25 m, with their addresses."
									},
									"downloads": {
										"type": "object",
										"properties": {
											"dxf": {
												"type": "string",
												"format": "uri",
												"description": "Irish Transverse Mercator metres, with its neighbours and buildings."
											},
											"geojson": {
												"type": "string",
												"format": "uri",
												"description": "WGS 84."
											},
											"kml": {
												"type": "string",
												"format": "uri",
												"description": "For Google Earth."
											}
										}
									},
									"page_url": {
										"type": "string",
										"format": "uri"
									},
									"markdown_url": {
										"type": "string",
										"format": "uri"
									}
								}
							},
							{
								"type": "null"
							}
						]
					},
					"source": {
						"type": "string",
						"description": "Where the DATA comes from. A citation copies this sentence."
					},
					"served_by": {
						"type": "object",
						"properties": {
							"name": {
								"type": "string"
							},
							"url": {
								"type": "string",
								"format": "uri"
							}
						}
					},
					"terms": {
						"type": "string"
					},
					"documentation": {
						"type": "string",
						"format": "uri"
					},
					"notice": {
						"type": "string",
						"description": "What a consumer cannot guess: no owner and no planning applicant is ever served."
					}
				}
			},
			"CivilParish": {
				"type": "object",
				"properties": {
					"url": {
						"type": "string",
						"format": "uri"
					},
					"civil_parish": {
						"type": "object"
					},
					"townlands": {
						"type": "array",
						"items": {
							"type": "object"
						}
					},
					"page_url": {
						"type": "string",
						"format": "uri"
					},
					"markdown_url": {
						"type": "string",
						"format": "uri"
					},
					"source": {
						"type": "string",
						"description": "Where the DATA comes from. A citation copies this sentence."
					},
					"served_by": {
						"type": "object",
						"properties": {
							"name": {
								"type": "string"
							},
							"url": {
								"type": "string",
								"format": "uri"
							}
						}
					},
					"terms": {
						"type": "string"
					},
					"documentation": {
						"type": "string",
						"format": "uri"
					},
					"notice": {
						"type": "string",
						"description": "What a consumer cannot guess: no owner and no planning applicant is ever served."
					}
				}
			},
			"County": {
				"type": "object",
				"properties": {
					"url": {
						"type": "string",
						"format": "uri"
					},
					"county": {
						"type": "object"
					},
					"townlands_url": {
						"type": "string",
						"format": "uri"
					},
					"prices": {
						"type": "object",
						"description": "Residential Property Price Register, market sales only: the median since median_since, and by year from three sales."
					},
					"civil_parishes": {
						"type": "array",
						"items": {
							"type": "object"
						}
					},
					"most_sold_places": {
						"type": "array",
						"items": {
							"type": "object"
						}
					},
					"page_url": {
						"type": "string",
						"format": "uri"
					},
					"markdown_url": {
						"type": "string",
						"format": "uri"
					},
					"source": {
						"type": "string",
						"description": "Where the DATA comes from. A citation copies this sentence."
					},
					"served_by": {
						"type": "object",
						"properties": {
							"name": {
								"type": "string"
							},
							"url": {
								"type": "string",
								"format": "uri"
							}
						}
					},
					"terms": {
						"type": "string"
					},
					"documentation": {
						"type": "string",
						"format": "uri"
					},
					"notice": {
						"type": "string",
						"description": "What a consumer cannot guess: no owner and no planning applicant is ever served."
					}
				}
			},
			"Townlands": {
				"type": "object",
				"properties": {
					"url": {
						"type": "string",
						"format": "uri"
					},
					"county": {
						"type": "object"
					},
					"townlands": {
						"type": "array",
						"items": {
							"type": "object"
						}
					},
					"page": {
						"type": "object",
						"required": [
							"total",
							"limit",
							"offset",
							"more",
							"next",
							"previous"
						],
						"properties": {
							"total": {
								"type": "integer"
							},
							"limit": {
								"type": "integer"
							},
							"offset": {
								"type": "integer"
							},
							"more": {
								"type": "boolean"
							},
							"next": {
								"type": [
									"string",
									"null"
								],
								"format": "uri"
							},
							"previous": {
								"type": [
									"string",
									"null"
								],
								"format": "uri"
							}
						}
					},
					"source": {
						"type": "string",
						"description": "Where the DATA comes from. A citation copies this sentence."
					},
					"served_by": {
						"type": "object",
						"properties": {
							"name": {
								"type": "string"
							},
							"url": {
								"type": "string",
								"format": "uri"
							}
						}
					},
					"terms": {
						"type": "string"
					},
					"documentation": {
						"type": "string",
						"format": "uri"
					},
					"notice": {
						"type": "string",
						"description": "What a consumer cannot guess: no owner and no planning applicant is ever served."
					}
				}
			},
			"Search": {
				"type": "object",
				"properties": {
					"url": {
						"type": "string",
						"format": "uri"
					},
					"query": {
						"type": "string"
					},
					"eircode": {
						"type": [
							"object",
							"null"
						]
					},
					"results": {
						"type": "array",
						"items": {
							"type": "object",
							"properties": {
								"kind": {
									"type": "string",
									"enum": [
										"townland",
										"place"
									]
								},
								"name": {
									"type": "string"
								},
								"locality": {
									"type": [
										"string",
										"null"
									]
								},
								"county": {
									"type": "string"
								},
								"sales": {
									"type": [
										"integer",
										"null"
									]
								},
								"url": {
									"type": [
										"string",
										"null"
									],
									"format": "uri"
								},
								"page_url": {
									"type": "string",
									"format": "uri"
								},
								"markdown_url": {
									"type": [
										"string",
										"null"
									],
									"format": "uri"
								}
							}
						}
					},
					"source": {
						"type": "string",
						"description": "Where the DATA comes from. A citation copies this sentence."
					},
					"served_by": {
						"type": "object",
						"properties": {
							"name": {
								"type": "string"
							},
							"url": {
								"type": "string",
								"format": "uri"
							}
						}
					},
					"terms": {
						"type": "string"
					},
					"documentation": {
						"type": "string",
						"format": "uri"
					},
					"notice": {
						"type": "string",
						"description": "What a consumer cannot guess: no owner and no planning applicant is ever served."
					}
				}
			},
			"Problem": {
				"type": "object",
				"description": "RFC 9457. type is an anchor of the documentation page, which answers.",
				"required": [
					"type",
					"title",
					"status",
					"detail",
					"instance"
				],
				"properties": {
					"type": {
						"type": "string",
						"format": "uri",
						"enum": [
							"https://everytownland.com/api#county-not-found",
							"https://everytownland.com/api#townland-not-found",
							"https://everytownland.com/api#street-not-found",
							"https://everytownland.com/api#civil-parish-not-found",
							"https://everytownland.com/api#invalid-parcel-id",
							"https://everytownland.com/api#parcel-not-found",
							"https://everytownland.com/api#invalid-position",
							"https://everytownland.com/api#invalid-query",
							"https://everytownland.com/api#source-unavailable",
							"https://everytownland.com/api#method-not-allowed",
							"https://everytownland.com/api#not-found",
							"https://everytownland.com/api#rate-limited"
						]
					},
					"title": {
						"type": "string"
					},
					"status": {
						"type": "integer"
					},
					"detail": {
						"type": "string"
					},
					"instance": {
						"type": "string"
					},
					"received": {
						"description": "What was received, when it helps to correct."
					},
					"expected": {
						"description": "The expected form."
					},
					"candidates": {
						"type": "array",
						"description": "On a name the county carries several times: each homonym and its address."
					}
				}
			}
		}
	}
}
