{
"error": "State, county, and parcelId are all required unless parcelId is a realieParcelId ({5-digit county FIPS}-{APN}), which may be passed alone"
}
{
"error": "Unauthorized: API key is missing"
}
{
"error": "Forbidden: Pay your outstanding invoices to restore access",
"code": "unpaid_invoices",
"action": "Open Billing and pay all outstanding invoices. Update your payment card if a payment fails, then retry once your subscription is active.",
"billing_url": "https://app.realie.ai/billing"
}
{
"error": "No property found matching the criteria"
}
{
"error": "That parcel number was a former number of more than one parcel; look the parcel up by realieId",
"realieIds": [
"6650f1c2a1b2c3d4e5f6071a",
"6650f1c2a1b2c3d4e5f6071b"
]
}
{
"error": "Internal Server Error"
}
Property
Parcel ID Lookup
Get a single property by its parcel identifier. Pass the assessor’s parcel ID (APN) with “state” and “county”, or pass a stored “realieParcelId”, which also works on its own. When “state” or “county” is omitted, “parcelId” is interpreted only as a realieParcelId: a value that is not a valid realieParcelId returns 400, and if you pass just one of “state” or “county”, it must match the realieParcelId’s county or the request returns 400. You can also pass “realieId” (the “realieId” field of a v3 result) instead of “parcelId”; “state” and “county” are then ignored, and the lookup reads v3 data only. A parcel keeps its “realieId” when the county renumbers it, and on v3 data reads a former number that no parcel holds now returns the renumbered parcel with “parcelIdChange”; see Renumbered parcels.
GET
/
public
/
property
/
parcelId
/
Parcel ID Lookup
curl --request GET \ --url https://app.realie.ai/api/public/property/parcelId/ \ --header 'Authorization: <api-key>'
{
"error": "State, county, and parcelId are all required unless parcelId is a realieParcelId ({5-digit county FIPS}-{APN}), which may be passed alone"
}
{
"error": "Unauthorized: API key is missing"
}
{
"error": "Forbidden: Pay your outstanding invoices to restore access",
"code": "unpaid_invoices",
"action": "Open Billing and pay all outstanding invoices. Update your payment card if a payment fails, then retry once your subscription is active.",
"billing_url": "https://app.realie.ai/billing"
}
{
"error": "No property found matching the criteria"
}
{
"error": "That parcel number was a former number of more than one parcel; look the parcel up by realieId",
"realieIds": [
"6650f1c2a1b2c3d4e5f6071a",
"6650f1c2a1b2c3d4e5f6071b"
]
}
When a county renumbers a parcel, the parcel keeps its realieId, takes the new parcelId and realieParcelId, and lists each former number in parcelIdHistory (see the Property Data Schema (v3)). Store realieId as your key and look the parcel up with realieId: it never changes.
Pass a former number the same way as a current one: an APN with state and county, or a former realieParcelId alone. If no parcel holds that number now, the response is the renumbered parcel, with a parcelIdChange object beside property. The call is billed like any other match.
The example omits the parcel’s other fields. In parcelIdChange, requestedParcelId is the value you passed; previousRealieParcelId, previousParcelId, changedOn, and reason come from the matching parcelIdHistory entry (the latest one, if several match); realieParcelId, parcelId, and realieId are the parcel’s current values. changedOn is null when we do not know the date of the change.
A number that some parcel holds now always returns that parcel, even if another parcel held it before. If a county gives a former number to a different parcel, a lookup by that number returns the parcel that holds it now. A stored realieId always returns the same parcel.
If no parcel holds the number now and two or more parcels once held it (for example, after a county split a parcel), the response is 409 with the realieIds of those parcels, sorted, at most 10. Look each one up by realieId. A 409 is not billed.
409
{ "error": "That parcel number was a former number of more than one parcel; look the parcel up by realieId", "realieIds": ["6650f1c2a1b2c3d4e5f6071a", "6650f1c2a1b2c3d4e5f6071b"]}
With includeExplicitNulls=true (accounts on the nested v3 shape, on v3 data reads), every other 200 response carries "parcelIdChange": null, parcelIdHistory is null on a parcel that was never renumbered, and an entry member with no value (such as an unknown changedOn) is null.
Former-number lookups and realieId lookups read v3 data only. For an account served from v2 data, or a parcel in a state served from v2 data, lookup by realieId or by realieParcelId alone returns 400, and a lookup by APN with state and county does not check former numbers. Records served from legacy coverage carry no realieId or parcelIdHistory.
When we cannot match a renumbered parcel to its earlier record, it arrives as a new parcel with its own realieId, not linked to its former number.
Splits and merges are not linked yet, beyond the 409 above.
Send your API key in the Authorization header. Preferred: the raw key (Authorization: YOUR_API_KEY). Also accepted: Bearer YOUR_API_KEY (Bearer scheme is case-insensitive), for HTTP clients that add the prefix automatically.
The parcel to look up: the exact assessor's parcel ID (APN), which requires "state" and "county", or a stored "realieParcelId" (the 5-digit county FIPS code, a hyphen, then the APN with spaces written as "", e.g. "11001-0314--0009"). When "state" or "county" is omitted, the value is interpreted only as a realieParcelId. Required unless "realieId" is passed; do not pass both. A former number of a renumbered parcel also works on v3 data reads; see "parcelIdChange" in the response.
The "realieId" field of a v3 result: 24 hexadecimal characters, e.g. "6650f1c2a1b2c3d4e5f60718". A parcel's realieId never changes, including when the county renumbers the parcel. Pass it instead of "parcelId"; "state" and "county" are not needed. Reads v3 data only.
Set true to include missing public nested property fields as explicit nulls. Requires an account enabled for the nested v3 response shape and a v3 data read; otherwise returns 400. Without this flag, fields with unknown values may be omitted. Also returns 400 when the match comes from the v2 coverage fallback.
Present only when "parcelId" matched a former number of the returned parcel, and not a number any parcel holds now. With includeExplicitNulls=true, every other 200 response carries "parcelIdChange": null; otherwise the key is omitted.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Realie Property Data API","colors":{"primary":"#44908c","light":"#14b8a6","dark":"#0d9488"},"logo":{"light":"https://mintcdn.com/realie/9vKrcGZ-RRBagK-f/logo/light.svg?fit=max\u0026auto=format\u0026n=9vKrcGZ-RRBagK-f\u0026q=85\u0026s=2f7b22584b010f06fc7c05c1ffe25e30","dark":"https://mintcdn.com/realie/9vKrcGZ-RRBagK-f/logo/dark.svg?fit=max\u0026auto=format\u0026n=9vKrcGZ-RRBagK-f\u0026q=85\u0026s=bb3411063459aff674088c71fd2d243c","href":"https://www.realie.ai"},"favicon":"https://mintcdn.com/realie/9vKrcGZ-RRBagK-f/favicon.svg?fit=max\u0026auto=format\u0026n=9vKrcGZ-RRBagK-f\u0026q=85\u0026s=1ce48591af4d7f71a51daa335eb56c9d","api":{"openapi":["api-reference/openapi.json","api-reference/v3/openapi.json"],"mdx":{"auth":{"method":"key","name":"x-api-key"},"server":"https://app.realie.ai/api"}},"background":{"color":{"light":"#f8f9f8","dark":"#0f0f0f"}},"navbar":{"links":[{"href":"mailto:support@realie.ai","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.realie.ai/dashboard"}},"footer":{"socials":{"x":"https://x.com/RealieAI","linkedin":"https://linkedin.com/company/realie-ai"}},"banner":{"content":"The Realie API now serves the v3 data generation. See the [v2 → v3 migration guide](/api-reference/v3/migration).","dismissible":true},"contextual":{"options":["chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"thumbnails":{"appearance":"dark","background":"https://mintcdn.com/realie/9vKrcGZ-RRBagK-f/images/og-background.png?fit=max\u0026auto=format\u0026n=9vKrcGZ-RRBagK-f\u0026q=85\u0026s=bc88bb1c601e5bca11d211fe28be6e0a"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://blog.realie.ai"},{"anchor":"Sales","icon":"messages","href":"https://www.realie.ai/?contact=sales"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"realie","hasAudioNarration":false,"actualSubdomain":"realie","customDomains":["docs.realie.ai"],"gitSource":{"type":"github","owner":"realie-ai","repo":"realie-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae519750629e1acceb4dbe6","collectionId":"6fe3ec36-06ec-4e8c-a81e-40f4e7524cc6","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae519750629e1acceb4dbe6"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae519750629e1acceb4dbe6","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"v3 API","count":17},{"language":"default","tag":"v2 API (legacy)","count":10},{"language":"default","tag":"Property","count":9},{"language":"default","tag":"Get Started","count":7},{"language":"default","tag":"Documentation","count":6},{"language":"default","tag":"v2 (Legacy)","count":5},{"language":"default","tag":"AI Resources","count":3},{"language":"default","tag":"Premium","count":3},{"language":"default","tag":"Response Fields \u0026 Types","count":3},{"language":"default","tag":"Property Data","count":2}]},"assistantConfig":{"deflection":{"enabled":true,"email":"support@realie.ai","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#banner,[data-testid=banner],[id=banner],div[class~=banner]{background:linear-gradient(135deg,#0d4a47 0,#0d9488 100%)!important}#banner a,[data-testid=banner] a{color:#f0fdfc!important}"}],"page":{"pagePath":"api-reference/v3/property/parcel-id-lookup","slug":"/api-reference/v3/property/parcel-id-lookup","pageMetadata":{"title":"Parcel ID Lookup","openapi":"api-reference/v3/openapi.json GET /public/property/parcelId/","description":"Get a single property by its parcel identifier. Pass the assessor's parcel ID (APN) with \"state\" and \"county\", or pass a stored \"realieParcelId\", which also works on its own. When \"state\" or \"county\" is omitted, \"parcelId\" is interpreted only as a realieParcelId: a value that is not a valid realieParcelId returns 400, and if you pass just one of \"state\" or \"county\", it must match the realieParcelId's county or the request returns 400. You can also pass \"realieId\" (the \"realieId\" field of a v3 result) instead of \"parcelId\"; \"state\" and \"county\" are then ignored, and the lookup reads v3 data only. A parcel keeps its \"realieId\" when the county renumbers it, and on v3 data reads a former number that no parcel holds now returns the renumbered parcel with \"parcelIdChange\"; see [Renumbered parcels](/api-reference/v3/property/parcel-id-lookup#renumbered-parcels).","href":"/api-reference/v3/property/parcel-id-lookup"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Get a single property by its parcel identifier. Pass the assessor’s parcel ID (APN) with “state” and “county”, or pass a stored “realieParcelId”, which also works on its own. When “state” or “county” is omitted, “parcelId” is interpreted only as a realieParcelId: a value that is not a valid realieParcelId returns 400, and if you pass just one of “state” or “county”, it must match the realieParcelId’s county or the request returns 400. You can also pass “realieId” (the “realieId” field of a v3 result) instead of “parcelId”; “state” and “county” are then ignored, and the lookup reads v3 data only. A parcel keeps its “realieId” when the county renumbers it, and on v3 data reads a former number that no parcel holds now returns the renumbered parcel with “parcelIdChange”; see \", _jsx(_components.a, {\n href: \"/api-reference/v3/property/parcel-id-lookup#renumbered-parcels\",\n children: \"Renumbered parcels\"\n }), \".\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`renumbered-parcels`,children:`Renumbered parcels`}),`\n`,_jsxs(_components.p,{children:[`When a county renumbers a parcel, the parcel keeps its `,_jsx(_components.code,{children:`realieId`}),`, takes the new `,_jsx(_components.code,{children:`parcelId`}),` and `,_jsx(_components.code,{children:`realieParcelId`}),`, and lists each former number in `,_jsx(_components.code,{children:`parcelIdHistory`}),` (see the `,_jsx(_components.a,{href:`/api-reference/v3/property-data-schema`,children:`Property Data Schema (v3)`}),`). Store `,_jsx(_components.code,{children:`realieId`}),` as your key and look the parcel up with `,_jsx(_components.code,{children:`realieId`}),`: it never changes.`]}),`\n`,_jsx(Heading,{level:`3`,id:`lookup-by-a-former-number`,children:`Lookup by a former number`}),`\n`,_jsxs(_components.p,{children:[`Pass a former number the same way as a current one: an APN with `,_jsx(_components.code,{children:`state`}),` and `,_jsx(_components.code,{children:`county`}),`, or a former `,_jsx(_components.code,{children:`realieParcelId`}),` alone. If no parcel holds that number now, the response is the renumbered parcel, with a `,_jsx(_components.code,{children:`parcelIdChange`}),` object beside `,_jsx(_components.code,{children:`property`}),`. The call is billed like any other match.`]}),`\n`,_jsx(CodeBlock,{filename:`200`,numberOfLines:`25`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`25`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"property\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"realieId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"6650f1c2a1b2c3d4e5f60718\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"realieParcelId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"11001-0314-~-0009\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"parcelId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"0314- -0009\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"parcelIdHistory\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"realieParcelId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"11001-0298-~-0815\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"parcelId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"0298- -0815\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"changedOn\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-07-01\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"reason\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"renumbered\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"parcelIdChange\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"requestedParcelId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"11001-0298-~-0815\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"previousRealieParcelId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"11001-0298-~-0815\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"previousParcelId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"0298- -0815\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"realieParcelId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"11001-0314-~-0009\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"parcelId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"0314- -0009\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"realieId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"6650f1c2a1b2c3d4e5f60718\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"changedOn\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-07-01\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"reason\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"renumbered\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The example omits the parcel’s other fields. In `,_jsx(_components.code,{children:`parcelIdChange`}),`, `,_jsx(_components.code,{children:`requestedParcelId`}),` is the value you passed; `,_jsx(_components.code,{children:`previousRealieParcelId`}),`, `,_jsx(_components.code,{children:`previousParcelId`}),`, `,_jsx(_components.code,{children:`changedOn`}),`, and `,_jsx(_components.code,{children:`reason`}),` come from the matching `,_jsx(_components.code,{children:`parcelIdHistory`}),` entry (the latest one, if several match); `,_jsx(_components.code,{children:`realieParcelId`}),`, `,_jsx(_components.code,{children:`parcelId`}),`, and `,_jsx(_components.code,{children:`realieId`}),` are the parcel’s current values. `,_jsx(_components.code,{children:`changedOn`}),` is `,_jsx(_components.code,{children:`null`}),` when we do not know the date of the change.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`A number that some parcel holds now always returns that parcel, even if another parcel held it before. If a county gives a former number to a different parcel, a lookup by that number returns the parcel that holds it now. A stored `,_jsx(_components.code,{children:`realieId`}),` always returns the same parcel.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`a-number-several-parcels-once-held`,children:`A number several parcels once held`}),`\n`,_jsxs(_components.p,{children:[`If no parcel holds the number now and two or more parcels once held it (for example, after a county split a parcel), the response is `,_jsx(_components.code,{children:`409`}),` with the `,_jsx(_components.code,{children:`realieIds`}),` of those parcels, sorted, at most 10. Look each one up by `,_jsx(_components.code,{children:`realieId`}),`. A `,_jsx(_components.code,{children:`409`}),` is not billed.`]}),`\n`,_jsx(CodeBlock,{filename:`409`,numberOfLines:`4`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"error\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"That parcel number was a former number of more than one parcel; look the parcel up by realieId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"realieIds\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"6650f1c2a1b2c3d4e5f6071a\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"6650f1c2a1b2c3d4e5f6071b\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`with-includeexplicitnulls`,children:`With includeExplicitNulls`}),`\n`,_jsxs(_components.p,{children:[`With `,_jsx(_components.code,{children:`includeExplicitNulls=true`}),` (accounts on the nested v3 shape, on v3 data reads), every other `,_jsx(_components.code,{children:`200`}),` response carries `,_jsx(_components.code,{children:`\"parcelIdChange\": null`}),`, `,_jsx(_components.code,{children:`parcelIdHistory`}),` is `,_jsx(_components.code,{children:`null`}),` on a parcel that was never renumbered, and an entry member with no value (such as an unknown `,_jsx(_components.code,{children:`changedOn`}),`) is `,_jsx(_components.code,{children:`null`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`availability-and-limits`,children:`Availability and limits`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Former-number lookups and `,_jsx(_components.code,{children:`realieId`}),` lookups read v3 data only. For an account served from v2 data, or a parcel in a state served from v2 data, lookup by `,_jsx(_components.code,{children:`realieId`}),` or by `,_jsx(_components.code,{children:`realieParcelId`}),` alone returns `,_jsx(_components.code,{children:`400`}),`, and a lookup by APN with `,_jsx(_components.code,{children:`state`}),` and `,_jsx(_components.code,{children:`county`}),` does not check former numbers. Records served from legacy coverage carry no `,_jsx(_components.code,{children:`realieId`}),` or `,_jsx(_components.code,{children:`parcelIdHistory`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`When we cannot match a renumbered parcel to its earlier record, it arrives as a new parcel with its own `,_jsx(_components.code,{children:`realieId`}),`, not linked to its former number.`]}),`\n`,_jsxs(_components.li,{children:[`Splits and merges are not linked yet, beyond the `,_jsx(_components.code,{children:`409`}),` above.`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Parcel ID Lookup","openapi":"api-reference/v3/openapi.json GET /public/property/parcelId/","description":"Get a single property by its parcel identifier. Pass the assessor's parcel ID (APN) with \"state\" and \"county\", or pass a stored \"realieParcelId\", which also works on its own. When \"state\" or \"county\" is omitted, \"parcelId\" is interpreted only as a realieParcelId: a value that is not a valid realieParcelId returns 400, and if you pass just one of \"state\" or \"county\", it must match the realieParcelId's county or the request returns 400. You can also pass \"realieId\" (the \"realieId\" field of a v3 result) instead of \"parcelId\"; \"state\" and \"county\" are then ignored, and the lookup reads v3 data only. A parcel keeps its \"realieId\" when the county renumbers it, and on v3 data reads a former number that no parcel holds now returns the renumbered parcel with \"parcelIdChange\"; see [Renumbered parcels](/api-reference/v3/property/parcel-id-lookup#renumbered-parcels).","href":"/api-reference/v3/property/parcel-id-lookup"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Renumbered parcels","slug":"renumbered-parcels","depth":2,"children":[{"title":"Lookup by a former number","slug":"lookup-by-a-former-number","depth":3,"children":[]},{"title":"A number several parcels once held","slug":"a-number-several-parcels-once-held","depth":3,"children":[]},{"title":"With includeExplicitNulls","slug":"with-includeexplicitnulls","depth":3,"children":[]},{"title":"Availability and limits","slug":"availability-and-limits","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Parcel ID Lookup","description":"Get a single property by its parcel identifier. Pass the assessor's parcel ID (APN) with \"state\" and \"county\", or pass a stored \"realieParcelId\", which also works on its own. When \"state\" or \"county\" is omitted, \"parcelId\" is interpreted only as a realieParcelId: a value that is not a valid realieParcelId returns 400, and if you pass just one of \"state\" or \"county\", it must match the realieParcelId's county or the request returns 400. You can also pass \"realieId\" (the \"realieId\" field of a v3 result) instead of \"parcelId\"; \"state\" and \"county\" are then ignored, and the lookup reads v3 data only. A parcel keeps its \"realieId\" when the county renumbers it, and on v3 data reads a former number that no parcel holds now returns the renumbered parcel with \"parcelIdChange\"; see [Renumbered parcels](/api-reference/v3/property/parcel-id-lookup#renumbered-parcels).","operationId":"parcelIdLookup","tags":["Property"],"x-mint":{"mcp":{"enabled":true,"name":"parcel-id-lookup","description":"Get a single property by exact Parcel ID (with state and county), by realieParcelId alone, or by realieId alone. A former parcel number returns the renumbered parcel with parcelIdChange."}},"parameters":["2b0b716f-420b-4986-9886-5135f7a16162","b81e4575-b5b1-44aa-a40d-8347b4e86a0f","937623b9-030d-4aaa-8b4b-654a4c090816","b4f67478-f8b8-43ad-af39-a03ee4c08ac1","8dcbad08-43a3-4efd-884b-554515894015"],"responses":{"200":"adb76f15-03d8-4690-901f-8c74f852e7dd","400":"8717a0d4-5786-46ab-9a0f-af7240a54726","401":"4f1f7b9a-d506-434f-b1cf-6abc778dd47b","403":"f9499113-ccf8-43c5-b0a2-039f4b99a9e7","404":"4e4a7a6c-bc2f-41dd-bb5d-3b7a67fe73a7","409":"0be03e8f-1f65-4dd9-b173-a3729d60b922","500":"492f2ee9-7b78-4bfd-b868-a399610b854d"},"security":["bd600b13-606d-442c-8f44-4282f93233cc"],"method":"get","type":"path","servers":["635bfe0c-928c-4962-9a7f-90e262437baf"],"path":"/public/property/parcelId/","baseUrlOptions":["https://app.realie.ai/api"],"title":"Parcel ID Lookup","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"2b0b716f-420b-4986-9886-5135f7a16162":{"name":"state","in":"query","required":false,"schema":{"type":"string","isRequired":false,"description":"The state (e.g. CA) where the property is located. Required unless \"parcelId\" is a realieParcelId or \"realieId\" is passed (ignored with \"realieId\").","uniqueKey":"","typeLabel":"string"},"description":"The state (e.g. CA) where the property is located. Required unless \"parcelId\" is a realieParcelId or \"realieId\" is passed (ignored with \"realieId\")."},"b81e4575-b5b1-44aa-a40d-8347b4e86a0f":{"name":"county","in":"query","required":false,"schema":{"type":"string","isRequired":false,"description":"The county where the property is located. Required unless \"parcelId\" is a realieParcelId or \"realieId\" is passed (ignored with \"realieId\").","uniqueKey":"","typeLabel":"string"},"description":"The county where the property is located. Required unless \"parcelId\" is a realieParcelId or \"realieId\" is passed (ignored with \"realieId\")."},"937623b9-030d-4aaa-8b4b-654a4c090816":{"name":"parcelId","in":"query","required":false,"schema":{"type":"string","isRequired":false,"description":"The parcel to look up: the exact assessor's parcel ID (APN), which requires \"state\" and \"county\", or a stored \"realieParcelId\" (the 5-digit county FIPS code, a hyphen, then the APN with spaces written as \"~\", e.g. \"11001-0314-~-0009\"). When \"state\" or \"county\" is omitted, the value is interpreted only as a realieParcelId. Required unless \"realieId\" is passed; do not pass both. A former number of a renumbered parcel also works on v3 data reads; see \"parcelIdChange\" in the response.","uniqueKey":"","typeLabel":"string"},"description":"The parcel to look up: the exact assessor's parcel ID (APN), which requires \"state\" and \"county\", or a stored \"realieParcelId\" (the 5-digit county FIPS code, a hyphen, then the APN with spaces written as \"~\", e.g. \"11001-0314-~-0009\"). When \"state\" or \"county\" is omitted, the value is interpreted only as a realieParcelId. Required unless \"realieId\" is passed; do not pass both. A former number of a renumbered parcel also works on v3 data reads; see \"parcelIdChange\" in the response."},"b4f67478-f8b8-43ad-af39-a03ee4c08ac1":{"name":"realieId","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9a-fA-F]{24}$","isRequired":false,"description":"The \"realieId\" field of a v3 result: 24 hexadecimal characters, e.g. \"6650f1c2a1b2c3d4e5f60718\". A parcel's realieId never changes, including when the county renumbers the parcel. Pass it instead of \"parcelId\"; \"state\" and \"county\" are not needed. Reads v3 data only.","uniqueKey":"","typeLabel":"string"},"description":"The \"realieId\" field of a v3 result: 24 hexadecimal characters, e.g. \"6650f1c2a1b2c3d4e5f60718\". A parcel's realieId never changes, including when the county renumbers the parcel. Pass it instead of \"parcelId\"; \"state\" and \"county\" are not needed. Reads v3 data only."},"8dcbad08-43a3-4efd-884b-554515894015":{"name":"includeExplicitNulls","in":"query","required":false,"schema":{"type":"boolean","default":false,"isRequired":false,"description":"Set true to include missing public nested property fields as explicit nulls. Requires an account enabled for the nested v3 response shape and a v3 data read; otherwise returns 400. Without this flag, fields with unknown values may be omitted. Also returns 400 when the match comes from the v2 coverage fallback.","uniqueKey":"","typeLabel":"boolean"},"description":"Set true to include missing public nested property fields as explicit nulls. Requires an account enabled for the nested v3 response shape and a v3 data read; otherwise returns 400. Without this flag, fields with unknown values may be omitted. Also returns 400 when the match comes from the v2 coverage fallback."}},"responses":{"adb76f15-03d8-4690-901f-8c74f852e7dd":{"description":"Property found successfully","content":{"application/json":{"schema":{"type":"object","properties":{"property":{"type":"object","description":"The property features found. Every field is listed in the [Property Data Schema (v3)](/api-reference/v3/property-data-schema); \"realieId\" and \"parcelIdHistory\" are shown here.","properties":{"realieId":{"type":"string","description":"The parcel's permanent id: 24 hexadecimal characters. It never changes, including when the county renumbers the parcel, so store it as your key. Not present on records served from legacy coverage.","example":"6650f1c2a1b2c3d4e5f60718","uniqueKey":"property.realieId","typeLabel":"string"},"parcelIdHistory":{"oneOf":[{"type":"array","description":"The parcel's former numbers, oldest first: one entry for each time the county renumbered the parcel. Omitted on a parcel that was never renumbered (null with includeExplicitNulls=true).","items":{"type":"object","description":"One former number. A member with no value is omitted (null with includeExplicitNulls=true).","properties":{"realieParcelId":{"oneOf":[{"type":"string","description":"The realieParcelId the parcel held before this change.","example":"11001-0298-~-0815","uniqueKey":"property.parcelIdHistory.oneOf.0.items.[INDEX].realieParcelId.oneOf.0","typeLabel":"string"},{"type":"null","description":"The realieParcelId the parcel held before this change.","example":"11001-0298-~-0815","uniqueKey":"property.parcelIdHistory.oneOf.0.items.[INDEX].realieParcelId.oneOf.1","typeLabel":"null"}],"uniqueKey":"property.parcelIdHistory.oneOf.0.items.[INDEX].realieParcelId","typeLabel":"string | null"},"parcelId":{"oneOf":[{"type":"string","description":"The assessor's parcel ID (APN) the parcel held before this change.","example":"0298- -0815","uniqueKey":"property.parcelIdHistory.oneOf.0.items.[INDEX].parcelId.oneOf.0","typeLabel":"string"},{"type":"null","description":"The assessor's parcel ID (APN) the parcel held before this change.","example":"0298- -0815","uniqueKey":"property.parcelIdHistory.oneOf.0.items.[INDEX].parcelId.oneOf.1","typeLabel":"null"}],"uniqueKey":"property.parcelIdHistory.oneOf.0.items.[INDEX].parcelId","typeLabel":"string | null"},"changedOn":{"oneOf":[{"type":"string","description":"Date of the change, as a \"YYYY-MM-DD\" string. Omitted when we do not know the date.","example":"2026-07-01","uniqueKey":"property.parcelIdHistory.oneOf.0.items.[INDEX].changedOn.oneOf.0","typeLabel":"string"},{"type":"null","description":"Date of the change, as a \"YYYY-MM-DD\" string. Omitted when we do not know the date.","example":"2026-07-01","uniqueKey":"property.parcelIdHistory.oneOf.0.items.[INDEX].changedOn.oneOf.1","typeLabel":"null"}],"uniqueKey":"property.parcelIdHistory.oneOf.0.items.[INDEX].changedOn","typeLabel":"string | null"},"reason":{"oneOf":[{"type":"string","description":"Why the number changed. Currently always \"renumbered\".","example":"renumbered","uniqueKey":"property.parcelIdHistory.oneOf.0.items.[INDEX].reason.oneOf.0","typeLabel":"string"},{"type":"null","description":"Why the number changed. Currently always \"renumbered\".","example":"renumbered","uniqueKey":"property.parcelIdHistory.oneOf.0.items.[INDEX].reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"property.parcelIdHistory.oneOf.0.items.[INDEX].reason","typeLabel":"string | null"}},"uniqueKey":"property.parcelIdHistory.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"property.parcelIdHistory.oneOf.0","typeLabel":"object[]"},{"type":"null","description":"The parcel's former numbers, oldest first: one entry for each time the county renumbered the parcel. Omitted on a parcel that was never renumbered (null with includeExplicitNulls=true).","items":{"type":"object","description":"One former number. A member with no value is omitted (null with includeExplicitNulls=true).","properties":{"realieParcelId":{"oneOf":[{"type":"string","description":"The realieParcelId the parcel held before this change.","example":"11001-0298-~-0815"},{"type":"null","description":"The realieParcelId the parcel held before this change.","example":"11001-0298-~-0815"}]},"parcelId":{"oneOf":[{"type":"string","description":"The assessor's parcel ID (APN) the parcel held before this change.","example":"0298- -0815"},{"type":"null","description":"The assessor's parcel ID (APN) the parcel held before this change.","example":"0298- -0815"}]},"changedOn":{"oneOf":[{"type":"string","description":"Date of the change, as a \"YYYY-MM-DD\" string. Omitted when we do not know the date.","example":"2026-07-01"},{"type":"null","description":"Date of the change, as a \"YYYY-MM-DD\" string. Omitted when we do not know the date.","example":"2026-07-01"}]},"reason":{"oneOf":[{"type":"string","description":"Why the number changed. Currently always \"renumbered\".","example":"renumbered"},{"type":"null","description":"Why the number changed. Currently always \"renumbered\".","example":"renumbered"}]}}},"uniqueKey":"property.parcelIdHistory.oneOf.1","typeLabel":"null"}],"uniqueKey":"property.parcelIdHistory","typeLabel":"object[] | null"}},"uniqueKey":"property","typeLabel":"object"},"parcelIdChange":{"oneOf":[{"type":"object","description":"Present only when \"parcelId\" matched a former number of the returned parcel, and not a number any parcel holds now. With includeExplicitNulls=true, every other 200 response carries \"parcelIdChange\": null; otherwise the key is omitted.","properties":{"requestedParcelId":{"type":"string","description":"The \"parcelId\" value you passed.","example":"11001-0298-~-0815","uniqueKey":"parcelIdChange.oneOf.0.requestedParcelId","typeLabel":"string"},"previousRealieParcelId":{"oneOf":[{"type":"string","description":"The realieParcelId the parcel held before the change, from the matching \"parcelIdHistory\" entry (the latest one, if several match).","example":"11001-0298-~-0815","uniqueKey":"parcelIdChange.oneOf.0.previousRealieParcelId.oneOf.0","typeLabel":"string"},{"type":"null","description":"The realieParcelId the parcel held before the change, from the matching \"parcelIdHistory\" entry (the latest one, if several match).","example":"11001-0298-~-0815","uniqueKey":"parcelIdChange.oneOf.0.previousRealieParcelId.oneOf.1","typeLabel":"null"}],"uniqueKey":"parcelIdChange.oneOf.0.previousRealieParcelId","typeLabel":"string | null"},"previousParcelId":{"oneOf":[{"type":"string","description":"The assessor's parcel ID (APN) the parcel held before the change, from the same entry.","example":"0298- -0815","uniqueKey":"parcelIdChange.oneOf.0.previousParcelId.oneOf.0","typeLabel":"string"},{"type":"null","description":"The assessor's parcel ID (APN) the parcel held before the change, from the same entry.","example":"0298- -0815","uniqueKey":"parcelIdChange.oneOf.0.previousParcelId.oneOf.1","typeLabel":"null"}],"uniqueKey":"parcelIdChange.oneOf.0.previousParcelId","typeLabel":"string | null"},"realieParcelId":{"oneOf":[{"type":"string","description":"The parcel's current realieParcelId.","example":"11001-0314-~-0009","uniqueKey":"parcelIdChange.oneOf.0.realieParcelId.oneOf.0","typeLabel":"string"},{"type":"null","description":"The parcel's current realieParcelId.","example":"11001-0314-~-0009","uniqueKey":"parcelIdChange.oneOf.0.realieParcelId.oneOf.1","typeLabel":"null"}],"uniqueKey":"parcelIdChange.oneOf.0.realieParcelId","typeLabel":"string | null"},"parcelId":{"oneOf":[{"type":"string","description":"The parcel's current assessor's parcel ID (APN).","example":"0314- -0009","uniqueKey":"parcelIdChange.oneOf.0.parcelId.oneOf.0","typeLabel":"string"},{"type":"null","description":"The parcel's current assessor's parcel ID (APN).","example":"0314- -0009","uniqueKey":"parcelIdChange.oneOf.0.parcelId.oneOf.1","typeLabel":"null"}],"uniqueKey":"parcelIdChange.oneOf.0.parcelId","typeLabel":"string | null"},"realieId":{"oneOf":[{"type":"string","description":"The parcel's realieId, which the renumbering did not change.","example":"6650f1c2a1b2c3d4e5f60718","uniqueKey":"parcelIdChange.oneOf.0.realieId.oneOf.0","typeLabel":"string"},{"type":"null","description":"The parcel's realieId, which the renumbering did not change.","example":"6650f1c2a1b2c3d4e5f60718","uniqueKey":"parcelIdChange.oneOf.0.realieId.oneOf.1","typeLabel":"null"}],"uniqueKey":"parcelIdChange.oneOf.0.realieId","typeLabel":"string | null"},"changedOn":{"oneOf":[{"type":"string","description":"Date of the change, as a \"YYYY-MM-DD\" string, from the same entry. Null when we do not know the date.","example":"2026-07-01","uniqueKey":"parcelIdChange.oneOf.0.changedOn.oneOf.0","typeLabel":"string"},{"type":"null","description":"Date of the change, as a \"YYYY-MM-DD\" string, from the same entry. Null when we do not know the date.","example":"2026-07-01","uniqueKey":"parcelIdChange.oneOf.0.changedOn.oneOf.1","typeLabel":"null"}],"uniqueKey":"parcelIdChange.oneOf.0.changedOn","typeLabel":"string | null"},"reason":{"oneOf":[{"type":"string","description":"Why the number changed, from the same entry. Currently always \"renumbered\".","example":"renumbered","uniqueKey":"parcelIdChange.oneOf.0.reason.oneOf.0","typeLabel":"string"},{"type":"null","description":"Why the number changed, from the same entry. Currently always \"renumbered\".","example":"renumbered","uniqueKey":"parcelIdChange.oneOf.0.reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"parcelIdChange.oneOf.0.reason","typeLabel":"string | null"}},"uniqueKey":"parcelIdChange.oneOf.0","typeLabel":"object"},{"type":"null","description":"Present only when \"parcelId\" matched a former number of the returned parcel, and not a number any parcel holds now. With includeExplicitNulls=true, every other 200 response carries \"parcelIdChange\": null; otherwise the key is omitted.","properties":{"requestedParcelId":{"type":"string","description":"The \"parcelId\" value you passed.","example":"11001-0298-~-0815"},"previousRealieParcelId":{"oneOf":[{"type":"string","description":"The realieParcelId the parcel held before the change, from the matching \"parcelIdHistory\" entry (the latest one, if several match).","example":"11001-0298-~-0815"},{"type":"null","description":"The realieParcelId the parcel held before the change, from the matching \"parcelIdHistory\" entry (the latest one, if several match).","example":"11001-0298-~-0815"}]},"previousParcelId":{"oneOf":[{"type":"string","description":"The assessor's parcel ID (APN) the parcel held before the change, from the same entry.","example":"0298- -0815"},{"type":"null","description":"The assessor's parcel ID (APN) the parcel held before the change, from the same entry.","example":"0298- -0815"}]},"realieParcelId":{"oneOf":[{"type":"string","description":"The parcel's current realieParcelId.","example":"11001-0314-~-0009"},{"type":"null","description":"The parcel's current realieParcelId.","example":"11001-0314-~-0009"}]},"parcelId":{"oneOf":[{"type":"string","description":"The parcel's current assessor's parcel ID (APN).","example":"0314- -0009"},{"type":"null","description":"The parcel's current assessor's parcel ID (APN).","example":"0314- -0009"}]},"realieId":{"oneOf":[{"type":"string","description":"The parcel's realieId, which the renumbering did not change.","example":"6650f1c2a1b2c3d4e5f60718"},{"type":"null","description":"The parcel's realieId, which the renumbering did not change.","example":"6650f1c2a1b2c3d4e5f60718"}]},"changedOn":{"oneOf":[{"type":"string","description":"Date of the change, as a \"YYYY-MM-DD\" string, from the same entry. Null when we do not know the date.","example":"2026-07-01"},{"type":"null","description":"Date of the change, as a \"YYYY-MM-DD\" string, from the same entry. Null when we do not know the date.","example":"2026-07-01"}]},"reason":{"oneOf":[{"type":"string","description":"Why the number changed, from the same entry. Currently always \"renumbered\".","example":"renumbered"},{"type":"null","description":"Why the number changed, from the same entry. Currently always \"renumbered\".","example":"renumbered"}]}},"uniqueKey":"parcelIdChange.oneOf.1","typeLabel":"null"}],"uniqueKey":"parcelIdChange","typeLabel":"object | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"property":{"realieId":"6650f1c2a1b2c3d4e5f60718","parcelIdHistory":[{"realieParcelId":"11001-0298-~-0815","parcelId":"0298- -0815","changedOn":"2026-07-01","reason":"renumbered"}]},"parcelIdChange":{"requestedParcelId":"11001-0298-~-0815","previousRealieParcelId":"11001-0298-~-0815","previousParcelId":"0298- -0815","realieParcelId":"11001-0314-~-0009","parcelId":"0314- -0009","realieId":"6650f1c2a1b2c3d4e5f60718","changedOn":"2026-07-01","reason":"renumbered"}}}},"exampleType":"generated"}},"exampleType":"generated"},"8717a0d4-5786-46ab-9a0f-af7240a54726":{"description":"Bad Request - Missing or invalid parameters. Returned when neither \"parcelId\" nor \"realieId\" is passed; when \"state\" or \"county\" is omitted and \"parcelId\" is not a valid realieParcelId; when only one of \"state\" or \"county\" is passed and it does not match the realieParcelId's county; when lookup by realieParcelId alone is not available for your account (pass \"state\" and \"county\" instead); when \"realieId\" is not 24 hexadecimal characters or is passed together with \"parcelId\"; or when lookup by realieId is not available for your account or for the parcel's state (pass \"parcelId\" with \"state\" and \"county\" instead). Also returned when includeExplicitNulls=true cannot use the nested v3 response shape, including a match from the v2 coverage fallback.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Description of the error that occurred.","example":"State, county, and parcelId are all required unless parcelId is a realieParcelId ({5-digit county FIPS}-{APN}), which may be passed alone","uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"State, county, and parcelId are all required unless parcelId is a realieParcelId ({5-digit county FIPS}-{APN}), which may be passed alone"}}},"exampleType":"generated"}},"exampleType":"generated"},"4f1f7b9a-d506-434f-b1cf-6abc778dd47b":{"description":"Unauthorized - Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Description of the error that occurred.","example":"Unauthorized: API key is missing","uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Unauthorized: API key is missing"}}},"exampleType":"generated"}},"exampleType":"generated"},"f9499113-ccf8-43c5-b0a2-039f4b99a9e7":{"description":"Forbidden - Billing, card verification, subscription status, or overage spending cap blocks access. Follow action before retrying. The first blocking condition is returned; a non-active subscription can return subscription_inactive before unpaid_invoices. See https://docs.realie.ai/api-reference/response-codes#resolving-a-403-response for each code and recovery steps.","content":{"application/json":{"schema":{"type":"object","required":["error","code","action","billing_url"],"properties":{"error":{"type":"string","description":"Human-readable explanation. Use code instead of matching this text in integrations.","example":"Forbidden: Pay your outstanding invoices to restore access","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable reason for the access denial.","enum":["card_not_verified","payment_method_required","overage_limit_exceeded","unpaid_invoices","subscription_inactive","subscription_required","subscription_ended","billing_unavailable","billing_configuration_error","access_denied"],"example":"unpaid_invoices","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"action":{"type":"string","description":"The next step to restore access. Display this guidance to the person who manages billing.","example":"Open Billing and pay all outstanding invoices. Update your payment card if a payment fails, then retry once your subscription is active.","isRequired":true,"uniqueKey":"action","typeLabel":"string"},"billing_url":{"type":"string","format":"uri","description":"Billing page where the account owner can resolve the issue.","example":"https://app.realie.ai/billing","isRequired":true,"uniqueKey":"billing_url","typeLabel":"string\u003curi>"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"Forbidden: Pay your outstanding invoices to restore access","code":"unpaid_invoices","action":"Open Billing and pay all outstanding invoices. Update your payment card if a payment fails, then retry once your subscription is active.","billing_url":"https://app.realie.ai/billing"},"examples":{"Example":{"title":"Example","value":{"error":"Forbidden: Pay your outstanding invoices to restore access","code":"unpaid_invoices","action":"Open Billing and pay all outstanding invoices. Update your payment card if a payment fails, then retry once your subscription is active.","billing_url":"https://app.realie.ai/billing"}}},"exampleType":"examples"}},"exampleType":"examples"},"4e4a7a6c-bc2f-41dd-bb5d-3b7a67fe73a7":{"description":"Not Found - No property found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Description of the error that occurred.","example":"No property found matching the criteria","uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"No property found matching the criteria"}}},"exampleType":"generated"}},"exampleType":"generated"},"0be03e8f-1f65-4dd9-b173-a3729d60b922":{"description":"Conflict - The parcel number matches more than one parcel. When no parcel holds the number now and several parcels once held it, the body lists their \"realieIds\"; look each parcel up by \"realieId\". A current number that matches more than one parcel returns only \"error\"; use an exact address lookup instead. Not billed.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Description of the error that occurred.","example":"That parcel number was a former number of more than one parcel; look the parcel up by realieId","uniqueKey":"error","typeLabel":"string"},"realieIds":{"type":"array","items":{"type":"string","uniqueKey":"realieIds.items.[INDEX]","typeLabel":"string"},"maxItems":10,"description":"Present only when the number is a former number of several parcels: their realieIds, sorted, at most 10.","example":["6650f1c2a1b2c3d4e5f6071a","6650f1c2a1b2c3d4e5f6071b"],"uniqueKey":"realieIds","typeLabel":"string[]"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":"That parcel number was a former number of more than one parcel; look the parcel up by realieId","realieIds":["6650f1c2a1b2c3d4e5f6071a","6650f1c2a1b2c3d4e5f6071b"]},"examples":{"Example":{"title":"Example","value":{"error":"That parcel number was a former number of more than one parcel; look the parcel up by realieId","realieIds":["6650f1c2a1b2c3d4e5f6071a","6650f1c2a1b2c3d4e5f6071b"]}}},"exampleType":"examples"}},"exampleType":"examples"},"492f2ee9-7b78-4bfd-b868-a399610b854d":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Description of the error that occurred.","example":"Internal Server Error","uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Internal Server Error"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"bd600b13-606d-442c-8f44-4282f93233cc":{"apiKeyAuth":{"type":"apiKey","name":"Authorization","in":"header","description":"Send your API key in the Authorization header. Preferred: the raw key (Authorization: YOUR_API_KEY). Also accepted: Bearer YOUR_API_KEY (Bearer scheme is case-insensitive), for HTTP clients that add the prefix automatically.","scopes":[],"schemeName":"apiKeyAuth"}}},"servers":{"635bfe0c-928c-4962-9a7f-90e262437baf":{"url":"https://app.realie.ai/api"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","name":"Authorization","in":"header","description":"Send your API key in the Authorization header. Preferred: the raw key (Authorization: YOUR_API_KEY). Also accepted: Bearer YOUR_API_KEY (Bearer scheme is case-insensitive), for HTTP clients that add the prefix automatically.","scopes":[],"schemeName":"apiKeyAuth"},"schema":{"title":"Authorization","type":"string","description":"Send your API key in the Authorization header. Preferred: the raw key (Authorization: YOUR_API_KEY). Also accepted: Bearer YOUR_API_KEY (Bearer scheme is case-insensitive), for HTTP clients that add the prefix automatically.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"apiKeyAuth","name":"Authorization"}],"title":"apiKeyAuth"}]},"originalFileLocation":"api-reference/v3/openapi.json"},"subdomain":"realie","siteName":"Realie Property Data API","title":"Parcel ID Lookup - Realie Property Data API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-30T22:26:03.926Z","originalFileLocation":"api-reference/v3/property/parcel-id-lookup.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Get a single property by its parcel identifier. Pass the assessor\u0026#x27;s parcel ID (APN) with \u0026quot;state\u0026quot; and \u0026quot;county\u0026quot;, or pass a stored \u0026quot;realieParcelId\u0026quot;, which also works on its own. When \u0026quot;state\u0026quot; or \u0026quot;county\u0026quot; is omitted, \u0026quot;parcelId\u0026quot; is interpreted only as a realieParcelId: a value that is not a valid realieParcelId returns 400, and if you pass just one of \u0026quot;state\u0026quot; or \u0026quot;county\u0026quot;, it must match the realieParcelId\u0026#x27;s county or the request returns 400. You can also pass \u0026quot;realieId\u0026quot; (the \u0026quot;realieId\u0026quot; field of a v3 result) instead of \u0026quot;parcelId\u0026quot;; \u0026quot;state\u0026quot; and \u0026quot;county\u0026quot; are then ignored, and the lookup reads v3 data only. A parcel keeps its \u0026quot;realieId\u0026quot; when the county renumbers it, and on v3 data reads a former number that no parcel holds now returns the renumbered parcel with \u0026quot;parcelIdChange\u0026quot;; see Renumbered parcels.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Realie Property Data API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/realie/p9cj4JZkFZggXYWs/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/realie/p9cj4JZkFZggXYWs/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/realie/p9cj4JZkFZggXYWs/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/realie/p9cj4JZkFZggXYWs/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/realie/p9cj4JZkFZggXYWs/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/realie/p9cj4JZkFZggXYWs/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/realie/p9cj4JZkFZggXYWs/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/realie/p9cj4JZkFZggXYWs/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/realie/p9cj4JZkFZggXYWs/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Parcel ID Lookup - Realie Property Data API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Get a single property by its parcel identifier. Pass the assessor\u0026#x27;s parcel ID (APN) with \u0026quot;state\u0026quot; and \u0026quot;county\u0026quot;, or pass a stored \u0026quot;realieParcelId\u0026quot;, which also works on its own. When \u0026quot;state\u0026quot; or \u0026quot;county\u0026quot; is omitted, \u0026quot;parcelId\u0026quot; is interpreted only as a realieParcelId: a value that is not a valid realieParcelId returns 400, and if you pass just one of \u0026quot;state\u0026quot; or \u0026quot;county\u0026quot;, it must match the realieParcelId\u0026#x27;s county or the request returns 400. You can also pass \u0026quot;realieId\u0026quot; (the \u0026quot;realieId\u0026quot; field of a v3 result) instead of \u0026quot;parcelId\u0026quot;; \u0026quot;state\u0026quot; and \u0026quot;county\u0026quot; are then ignored, and the lookup reads v3 data only. A parcel keeps its \u0026quot;realieId\u0026quot; when the county renumbers it, and on v3 data reads a former number that no parcel holds now returns the renumbered parcel with \u0026quot;parcelIdChange\u0026quot;; see Renumbered parcels.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Realie Property Data API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.realie.ai/api-reference/v3/property/parcel-id-lookup\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://realie.mintlify.app/_mintlify/api/og/v2?division=Property\u0026amp;title=Parcel+ID+Lookup\u0026amp;description=Get+a+single+property+by+its+parcel+identifier.+Pass+the+assessor%27s+parcel+ID+%28APN%29+with+%22state%22+and+%22county%22%2C+or+pass+a+stored+%22realieParcelId%22%2C+which+also+wor\u0026amp;theme=ba2276a96ca695613a0a6dbc\u0026amp;signature=814e05b723098c2e1cd88367df8d76df437089c1fc8354b28c44139362bd4f6a\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Parcel ID Lookup - Realie Property Data API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Get a single property by its parcel identifier. Pass the assessor\u0026#x27;s parcel ID (APN) with \u0026quot;state\u0026quot; and \u0026quot;county\u0026quot;, or pass a stored \u0026quot;realieParcelId\u0026quot;, which also works on its own. When \u0026quot;state\u0026quot; or \u0026quot;county\u0026quot; is omitted, \u0026quot;parcelId\u0026quot; is interpreted only as a realieParcelId: a value that is not a valid realieParcelId returns 400, and if you pass just one of \u0026quot;state\u0026quot; or \u0026quot;county\u0026quot;, it must match the realieParcelId\u0026#x27;s county or the request returns 400. You can also pass \u0026quot;realieId\u0026quot; (the \u0026quot;realieId\u0026quot; field of a v3 result) instead of \u0026quot;parcelId\u0026quot;; \u0026quot;state\u0026quot; and \u0026quot;county\u0026quot; are then ignored, and the lookup reads v3 data only. A parcel keeps its \u0026quot;realieId\u0026quot; when the county renumbers it, and on v3 data reads a former number that no parcel holds now returns the renumbered parcel with \u0026quot;parcelIdChange\u0026quot;; see Renumbered parcels.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://realie.mintlify.app/_mintlify/api/og/v2?division=Property\u0026amp;title=Parcel+ID+Lookup\u0026amp;description=Get+a+single+property+by+its+parcel+identifier.+Pass+the+assessor%27s+parcel+ID+%28APN%29+with+%22state%22+and+%22county%22%2C+or+pass+a+stored+%22realieParcelId%22%2C+which+also+wor\u0026amp;theme=ba2276a96ca695613a0a6dbc\u0026amp;signature=814e05b723098c2e1cd88367df8d76df437089c1fc8354b28c44139362bd4f6a\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/realie/p9cj4JZkFZggXYWs/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Realie Property Data API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#44908c\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.realie.ai/api-reference/v3/property/parcel-id-lookup\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/v3/property/parcel-id-lookup.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.realie.ai/#organization\",\"name\":\"Realie Property Data API\",\"url\":\"https://docs.realie.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/realie/9vKrcGZ-RRBagK-f/logo/light.svg?fit=max\u0026auto=format\u0026n=9vKrcGZ-RRBagK-f\u0026q=85\u0026s=2f7b22584b010f06fc7c05c1ffe25e30\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.realie.ai#website\",\"name\":\"Realie Property Data API\",\"url\":\"https://docs.realie.ai\",\"publisher\":{\"@id\":\"https://docs.realie.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.realie.ai/api-reference/v3/property/parcel-id-lookup#webpage\",\"url\":\"https://docs.realie.ai/api-reference/v3/property/parcel-id-lookup\",\"name\":\"Parcel ID Lookup\",\"description\":\"Get a single property by its parcel identifier. Pass the assessor's parcel ID (APN) with \\\"state\\\" and \\\"county\\\", or pass a stored \\\"realieParcelId\\\", which also works on its own. When \\\"state\\\" or \\\"county\\\" is omitted, \\\"parcelId\\\" is interpreted only as a realieParcelId: a value that is not a valid realieParcelId returns 400, and if you pass just one of \\\"state\\\" or \\\"county\\\", it must match the realieParcelId's county or the request returns 400. You can also pass \\\"realieId\\\" (the \\\"realieId\\\" field of a v3 result) instead of \\\"parcelId\\\"; \\\"state\\\" and \\\"county\\\" are then ignored, and the lookup reads v3 data only. A parcel keeps its \\\"realieId\\\" when the county renumbers it, and on v3 data reads a former number that no parcel holds now returns the renumbered parcel with \\\"parcelIdChange\\\"; see Renumbered parcels.\",\"dateModified\":\"2026-10-30T22:26:03.926Z\",\"isPartOf\":{\"@id\":\"https://docs.realie.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.realie.ai/api-reference/v3/property/parcel-id-lookup#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.realie.ai/api-reference/v3/property/parcel-id-lookup#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Property\",\"item\":\"https://docs.realie.ai/api-reference/v3/property/property-search\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Parcel ID Lookup\",\"item\":\"https://docs.realie.ai/api-reference/v3/property/parcel-id-lookup\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.realie.ai/api-reference/v3/property/parcel-id-lookup#apireference\",\"headline\":\"Parcel ID Lookup\",\"name\":\"Parcel ID Lookup\",\"description\":\"Get a single property by its parcel identifier. Pass the assessor's parcel ID (APN) with \\\"state\\\" and \\\"county\\\", or pass a stored \\\"realieParcelId\\\", which also works on its own. When \\\"state\\\" or \\\"county\\\" is omitted, \\\"parcelId\\\" is interpreted only as a realieParcelId: a value that is not a valid realieParcelId returns 400, and if you pass just one of \\\"state\\\" or \\\"county\\\", it must match the realieParcelId's county or the request returns 400. You can also pass \\\"realieId\\\" (the \\\"realieId\\\" field of a v3 result) instead of \\\"parcelId\\\"; \\\"state\\\" and \\\"county\\\" are then ignored, and the lookup reads v3 data only. A parcel keeps its \\\"realieId\\\" when the county renumbers it, and on v3 data reads a former number that no parcel holds now returns the renumbered parcel with \\\"parcelIdChange\\\"; see Renumbered parcels.\",\"url\":\"https://docs.realie.ai/api-reference/v3/property/parcel-id-lookup\",\"mainEntityOfPage\":{\"@id\":\"https://docs.realie.ai/api-reference/v3/property/parcel-id-lookup#webpage\"},\"dateModified\":\"2026-10-30T22:26:03.926Z\",\"publisher\":{\"@id\":\"https://docs.realie.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.realie.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Realie Property Data API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Realie Property Data API","nav":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://blog.realie.ai"},{"anchor":"Sales","icon":"messages","href":"https://www.realie.ai/?contact=sales"}]},"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"v3 API","groups":[{"group":"Get Started","pages":[{"title":"Introduction","href":"/api-reference/v3/overview"},{"title":"Migrating from v2 to v3","href":"/api-reference/v3/migration"},{"title":"Migration FAQ","href":"/api-reference/v3/migration-faq"},{"title":"Changelog","href":"/api-reference/v3/changelog"},{"title":"Pagination","href":"/api-reference/pagination"},{"title":"API FAQ","href":"/api-reference/faq"},{"title":"Plans and Pricing","href":"/api-reference/pricing"}]},{"group":"Response Fields \u0026 Types","pages":[{"title":"Response Codes","href":"/api-reference/response-codes"},{"group":"Property Data","pages":[{"title":"Property Data Schema (v3)","href":"/api-reference/v3/property-data-schema"},{"title":"Property Feature Field Key (v3)","href":"/api-reference/v3/feature-key"}]}]},{"group":"Property","pages":[{"title":"Property Search","openapi":"api-reference/v3/openapi.json GET /public/property/search/","href":"/api-reference/v3/property/property-search"},{"title":"Address Lookup","openapi":"api-reference/v3/openapi.json GET /public/property/address/","description":null,"href":"/api-reference/v3/property/address-lookup"},{"title":"Parcel ID Lookup","openapi":"api-reference/v3/openapi.json GET /public/property/parcelId/","href":"/api-reference/v3/property/parcel-id-lookup"},{"title":"Owner Search","openapi":"api-reference/v3/openapi.json GET /public/property/owner/","description":"Search parcels by recorded current-owner name. Requires state and at least one of lastName or nameContains. Both recorded owner-name slots are searched. The v3 result window is limited to 200 candidate parcels, so broad names can return an incomplete set; refine the query to narrow the results. Pagination uses limit and offset, with offset + limit at most 200 on v3 reads. The account response-shape setting controls whether properties contain nested v3 records or the v2-compatible flat layout; see the [v3 overview](/api-reference/v3/overview) and [Property Data Schema](/api-reference/v3/property-data-schema). Send your API key in the Authorization header (raw key or Bearer prefix; see [Authentication](/api-reference/v3/overview#authentication)). Normal API-access and billing checks apply. A successful 200 response costs one token; 400, 401, 403, and 404 responses are not billed. See [Plans and Pricing](/api-reference/pricing). This base endpoint allows up to 100 properties per page. For county filtering, use [Premium Owner Search](/api-reference/v3/premium/premium-owner-search).","href":"/api-reference/v3/property/owner-search"},{"title":"Location Search","openapi":"api-reference/v3/openapi.json GET /public/property/location/","href":"/api-reference/v3/property/location-search"}]},{"group":"Premium","pages":[{"title":"Premium Owner Search","openapi":"api-reference/v3/openapi.json GET /public/premium/owner/","href":"/api-reference/v3/premium/premium-owner-search"},{"title":"Premium Comparables Search","openapi":"api-reference/v3/openapi.json GET /public/premium/comparables/","href":"/api-reference/v3/premium/premium-comparables-search"}]}]},{"tab":"v2 API (legacy)","pages":[{"title":"v2 API (legacy)","href":"/api-reference/v2-legacy"}]}]},"basePath":"","title":"Parcel ID Lookup - Realie Property Data API","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["10e4515597","c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["BannerMarkdown-CX_qQQOL.js","dist-BTZUMDnx.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-xpJZXxdP.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","OpenApiReferenceProvider-CS552b7R.js","utils-DDTCYAF2.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-De8ttokP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DrwRDvAh.js","snippetPresets-DtAN0nWx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D5rWArI6.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-O2i12wsz.js","shallow-DV8xABTt.js","getApiPlaygroundDisplay-DBZ0B5Jx.js","CodeSnippet-BVi0tPUX.js","CodeSnippets-CqASbIwY.js","Page-m07pfKpT.js","getPastedJson-DG9vsMS8.js","icon-CXzRSCr8.js","MethodPill-BdKVtEuX.js","DuplicateIcon-CZlmBrJI.js","createIcon-biFEUKPL.js","DynamicMarkdown-B54_zNBF.js","SectionHeading-DwwHK3Pt.js","axios-vUo_bRtp.js","Markdown-DfhCTwyA.js","AssistantPageLink-DqdKa2R4.js"]}