Licensed Baku Property Export Normalizer avatar

Licensed Baku Property Export Normalizer

Pricing

from $1.70 / 1,000 normalized baku property records

Go to Apify Store
Licensed Baku Property Export Normalizer

Licensed Baku Property Export Normalizer

Normalize authorized or licensed Baku property exports into provenance-linked review rows with stable identity, freshness, confidence gaps, human actions, and current-run settlement. Zero portal requests, verification, valuation, or automated property decisions.

Pricing

from $1.70 / 1,000 normalized baku property records

Rating

0.0

(0)

Developer

Tim Zinin

Tim Zinin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Categories

Share

Turn property records you are allowed to use into clean, provenance-linked evidence rows for Baku real-estate review. The Actor accepts buyer-owned, owner- or agent-authorized, licensed-feed, or otherwise authorized structured exports. It does not visit Tap.az, crawl a property portal, open listing URLs, log in, use a browser, or verify that a listing is active.

Licensed Baku Property Export Normalizer: authorized listings to evidence-led review

The historical Store slug remains tap-az-baku for API continuity. The current product is an independent zero-network property-export normalizer. It is not affiliated with Tap.az and does not grant access to or rights in Tap.az content. Historical search fields remain accepted, but they now return a free migration diagnostic instead of contacting the old source.

What you get

For every accepted unique licensed property record, the Actor delivers one Dataset row with:

  • the established property fields: URL, title, price, currency, deal type, property type, rooms, area, location, coordinates, posting date, description, images, floor, and processing time;
  • a stable listing identity derived from the supplied source name and source listing ID;
  • deterministic input, request, and row digests;
  • source name, source URL, licence or authorization statement, retrieval time, and changes made;
  • freshness based only on the buyer-supplied source retrieval timestamp;
  • evidence confidence with a basis and concrete gaps;
  • a human-review outcome, priority, action, and safeToAutomate: false;
  • settlement-neutral Dataset billing metadata;
  • authoritative current-run delivery and PAY_PER_EVENT reconciliation in KVS OUTPUT.

The Actor answers “did this supplied record satisfy the normalization contract?” It does not answer “is this property available?”, “is the price current?”, “is the seller genuine?”, “is this a good investment?”, or “may I republish these photos?”.

Who uses it

Property operations teams

Normalize authorized exports from owners, agents, internal systems, data partners, or licensed feeds before human review and downstream routing.

Real-estate agencies and portfolio teams

Create a consistent evidence layer across mixed exports while preserving source identity, licence context, timestamps, and transformations.

Data engineers

Consume stable IDs, digests, closed schemas, explicit diagnostics, and a current-run settlement receipt instead of relying on process exit or Dataset presence alone.

Governance and compliance reviewers

Inspect source-rights context, licence text, image and description provenance, retrieval time, confidence gaps, and the recommended review action.

Market analysts

Organize authorized listing evidence by price, type, area, location, and freshness without implying live market coverage or investment advice.

What it does not do

  • It does not request Tap.az or another property website.
  • It does not fetch the recorded listing, source, or image URLs.
  • It does not use a browser, proxy, session cookie, API key, or login.
  • It does not bypass robots instructions, access controls, paywalls, or rate limits.
  • It does not verify ownership, agency authority, title, permits, zoning, valuation, availability, price, dimensions, coordinates, images, or descriptions.
  • It does not detect scams, legal defects, investment quality, or expected returns.
  • It does not contact sellers, agents, owners, tenants, or buyers.
  • It does not identify or profile natural persons.
  • It does not create a cross-run monitoring baseline.
  • It does not make a purchase, rental, credit, legal, or investment decision.
  • It does not prove settlement from the Dataset row; current-run KVS OUTPUT is authoritative.

How it works

Licensed Baku Property Export Normalizer: rights, schema, identity, provenance, delivery, and review

  1. Rights confirmation — select a closed source context and confirm commercial processing rights.
  2. Schema validation — reject unknown fields, bad types, controls, malformed timestamps, bad coordinates, impossible prices, and unsafe URL syntax.
  3. Identity deduplication — suppress duplicate (sourceName, sourceListingId) identities before paid delivery.
  4. Evidence construction — derive stable IDs, digests, freshness, confidence gaps, provenance, and a human-review boundary.
  5. Linked delivery — deliver each eligible row through one pushData(row, 'result-found') operation.
  6. Settlement verification — require the named counter to move by exactly +1 and require the linked aggregate receipt to match.
  7. Terminal receipt — persist exact work, delivery, payment, diagnostic, withheld, unknown, partial, budget, fatal, and replay state to KVS OUTPUT.

The whole pipeline performs zero source network requests.

How to run

Use the modern contract for new integrations:

{
"schemaVersion": "2.0",
"authorization": "I confirm I may process and commercially use these property records.",
"sourceContext": "owner_or_agent_authorized_export",
"batchName": "baku-property-review",
"freshnessHours": 168,
"listings": [
{
"sourceListingId": "demo-baku-001",
"title": "Two-bedroom apartment",
"price": 285000,
"currency": "AZN",
"deal_type": "sale",
"property_type": "Apartment",
"rooms": 3,
"rooms_raw": "2 otaq",
"area_sqm": 95,
"location": "Bakı, Azərbaycan",
"floor_raw": "8-ci mərtəbə",
"lat": null,
"lng": null,
"posted_date": "2026-08-12T09:00:00.000Z",
"description": "Buyer-supplied property summary.",
"images": [],
"url": "https://properties.example.com/listings/demo-baku-001",
"sourceName": "Example authorized property export",
"sourceUrl": "https://properties.example.com/exports/baku",
"sourceLicense": "Owner-authorized export for internal property review.",
"sourceRetrievedAt": "2026-08-12T10:00:00.000Z",
"changesMade": "Selected fields and normalized whitespace."
}
]
}

The domains, listing, price, and organization in the example are fictional. Replace them with data and provenance you are authorized to process.

Input contract

The root object is closed. Unknown fields fail before Dataset delivery. Choose exactly one mode.

Modern authorized-export mode

Required root fields:

FieldTypeMeaning
schemaVersionstringMust equal 2.0.
authorizationclosed stringExact rights confirmation.
sourceContextenumBuyer-asserted rights context.
listingsarrayOne to 100 structured records.

Optional root fields:

FieldBoundsDefaultMeaning
batchName1–80 nonblank characterslicensed-property-evidence-reviewReview-batch label.
freshnessHours1–8,760 integer168Freshness threshold applied to source retrieval time.

Source contexts:

  • buyer_owned_property_export
  • owner_or_agent_authorized_export
  • licensed_property_feed
  • other_authorized_property_export

The selection is a buyer assertion. The Actor does not read a contract or make a legal determination.

Listing record fields

FieldRequiredContract
sourceListingIdyesNonblank durable source identifier, maximum 200 characters.
titleyesSupplied title, 1–300 characters.
priceyesFinite number above zero and at most 1e15.
currencyyesSupplied currency label, 1–10 characters. No exchange-rate validation.
deal_typeyessale or rent.
property_typeyesSupplied type label, maximum 100 characters.
roomsnoNullable finite number from 0 to 1,000.
rooms_rawnoNullable source label such as 2 otaq, maximum 100 characters.
area_sqmnoNullable finite number from 0 to 100,000,000. Unit is buyer-asserted.
locationnoNullable supplied location, maximum 300 characters.
floor_rawnoNullable supplied floor label, maximum 100 characters.
latnoNullable latitude from -90 through 90.
lngnoNullable longitude from -180 through 180.
posted_datenoNullable calendar-valid UTC timestamp ending in Z.
descriptionnoNullable buyer-supplied text, maximum 500 characters. Minimize personal data.
imagesyesZero to five HTTPS URLs. URLs are recorded and never fetched.
urlyesHTTPS listing reference without credentials, custom port, or fragment. Never fetched.
sourceNameyesSource or export name, maximum 200 characters.
sourceUrlyesHTTPS provenance reference, never fetched.
sourceLicenseyesLicence or authorization statement, maximum 700 characters.
sourceRetrievedAtyesCalendar-valid UTC timestamp supplied by the buyer/provider.
changesMadeyesSelection, normalization, truncation, or transformation disclosure, maximum 500 characters.

The URL parser lowercases hostnames. It rejects credentials, explicit ports, fragments, and non-HTTPS protocols. This is syntax validation only; the Actor does not resolve or trust the host.

Legacy migration mode

Historical inputs continue to parse:

{
"category": "menziller",
"max_items": 5,
"max_pages": 1,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": [
"RESIDENTIAL"
],
"apifyProxyCountry": "AZ"
}
}

No Tap.az or other source request is made. The normalized legacy scope is digested into the receipt, and one free diagnostic explains how to submit an authorized listings export. No result-found event is intentionally emitted.

Legacy bounds are preserved:

  • category: bounded nonblank historical string
  • max_items: integer 1–2000
  • max_pages: integer 1–20
  • proxyConfiguration: closed historical object; unknown keys are rejected and values are only normalized and digested

These values no longer control a crawl; they exist for migration compatibility.

Happy, partial, and failure output

The release gate uses these concise acceptance wrappers. They bind the current run and immutable build; they are verification evidence, not extra Dataset or OUTPUT fields.

{
"runId": "example-current-run",
"buildId": "candidate-build-id",
"status": "SUCCEEDED",
"evidenceAccepted": true,
"artifact": "Dataset row"
}
{
"runId": "example-current-run",
"buildId": "candidate-build-id",
"status": "SUCCEEDED",
"evidenceAccepted": true,
"artifact": "KVS OUTPUT"
}

Happy output

A valid unique record produces one licensed_property_record. The checked example is generated from examples/input.json. Key fields look like this:

{
"schemaVersion": "2.0.0",
"recordType": "licensed_property_record",
"stableId": "licensed-property:…",
"title": "Two-bedroom apartment",
"price": 285000,
"currency": "AZN",
"deal_type": "sale",
"property_type": "Apartment",
"found": true,
"partial": false,
"sourceListingId": "demo-baku-001",
"freshness": {
"status": "fresh",
"basis": "buyer_supplied_source_retrieval_time"
},
"change": {
"status": "not_measured",
"basis": "single_authorized_export_record"
},
"decision": {
"outcome": "review_required",
"priority": "normal",
"safeToAutomate": false
},
"billing": {
"billingEligible": true,
"billingIntent": "linked_push_result_found",
"eventName": "result-found",
"settlementSource": "current_run_kvs_output"
}
}

The Dataset row states billing eligibility and intent, not payment. Read current-run KVS OUTPUT to determine paid, free, withheld, unknown, or anomalous settlement.

Partial output

PARTIAL means the run delivered diagnostics, suppressed duplicates, rejected invalid records, stopped at the budget, or completed less than all eligible work without a fatal state.

Examples:

  • one valid and one malformed record can produce one paid listing plus one free invalid-record diagnostic;
  • repeated source identity produces one paid candidate plus a free duplicate diagnostic;
  • legacy scope produces a free migration diagnostic and no paid listing;
  • a buyer budget may preserve confirmed rows while counting remaining rows as withheld.

Diagnostics have recordType: property_export_advisory, found: false, partial: true, null property facts, empty images, explicit failureDiagnostics, and billingEligible: false.

Failure output

Fatal conditions include:

  • missing or invalid hosted run ID;
  • missing current Dataset ID;
  • invalid input root or mode;
  • pricing map, tier, spend, or initial named-counter mismatch;
  • pre-push counter failure;
  • unknown linked-push outcome;
  • unreadable or contradictory post-push settlement;
  • free diagnostic write failure;
  • primary and bounded recovery KVS failures;
  • platform exit failure.

A thrown linked push is unknown_delivery; it is not automatically retried or labeled withheld. A returned push with unreadable settlement is settlement_unknown; the Dataset write may be known even when payment is not. A contradictory counter/receipt is settlement_anomaly. These are distinct states.

Field dictionary

FieldMeaning now
urlRecorded HTTPS listing URL; never fetched.
titleSupplied listing title.
priceSupplied numeric price; not appraised or verified.
currencySupplied currency label; no FX conversion.
deal_typeSupplied sale or rent.
property_typeSupplied property type.
roomsSupplied normalized number or null.
area_sqmSupplied area or null.
locationSupplied location or null.
lat, lngSupplied coordinates or null.
posted_dateSupplied UTC timestamp or null.
descriptionSupplied bounded description or null.
imagesUp to five recorded HTTPS URLs; never fetched.
source_portalCompatibility alias for sourceName; not a verified portal identity.
scraped_atCompatibility alias for observedAt; the current runtime does not scrape.
partialFalse on accepted property rows, true on diagnostics.
partial_reasonNull on property rows, diagnostic summary on advisories.
rooms_rawSupplied room label.
floor_rawSupplied floor label.
foundTrue only for an accepted normalized property record.
error, noteNull on accepted records; diagnostic summary on advisories.

Evidence and boundaries

Identity

  • schemaVersion: 2.0.0
  • recordType: paid candidate or free advisory
  • stableId: deterministic source-name plus source-listing identity
  • sourceListingId: supplied source identity
  • rowDigest: digest of the complete row excluding itself

Provenance

  • sourceName
  • sourceUrl
  • sourceLicense
  • sourceRetrievedAt
  • changesMade
  • evidence.entityId
  • evidence.inputDigest
  • evidence.requestDigest
  • evidence.sourceContext
  • evidence.networkRequestsMade: 0
  • evidence.sourceFetchedByActor: false

Provenance values are preserved buyer assertions. Their presence improves traceability but does not prove authenticity or legal sufficiency.

Freshness

  • status: fresh, stale, or unknown
  • observedAt: processing time
  • sourceRetrievedAt: supplied retrieval time
  • ageSeconds: nonnegative difference; a future supplied time clamps to zero
  • thresholdSeconds: freshnessHours × 3,600
  • basis: buyer-supplied retrieval time or no delivered record

Freshness does not prove listing activity.

Change

change.status is always not_measured. The Actor is stateless and does not compare with earlier runs. Use stable IDs and row digests in your own licensed storage if version tracking is required.

Confidence

The confidence score reflects deterministic contract completeness. Its permanent gaps include unverified listing activity, price, property facts, source terms, and identity. Missing location, posting time, rooms, area, or stale source evidence adds more gaps. The score is not an accuracy probability.

Decision

Accepted property records use review_required. Diagnostics use input_action_required. Every row has safeToAutomate: false. Review should cover source rights, availability, price, property facts, images, personal data, and the intended downstream action.

Billing

Dataset billing fields are settlement-neutral:

  • billingEligible
  • billingIntent
  • eventName
  • unit
  • settlementSource: current_run_kvs_output

The unit is one delivered normalized licensed property record.

KVS OUTPUT

KVS OUTPUT is bound to the current run and current default Dataset.

Input partition

Modern input must satisfy:

requestedCount = uniqueCount + duplicateCount + invalidCount

Legacy mode has legacyScopeCount: 1 and zero modern counts.

Work partition

The receipt exposes:

  • attemptedCount
  • successfulCount
  • failedCount
  • deliveredRowCount
  • paidRowCount
  • freeRowCount
  • withheldRowCount
  • unknownDeliveryCount
  • unknownSettlementCount
  • normalizedPropertyCount
  • partial
  • budgetStopped
  • fatalError
  • replaySafe
  • safeToAutomate

The runtime semantic validator reconstructs the exact partition. Nonnegative numbers alone are not enough.

For each paid record:

  1. named result-found counter before the push equals already confirmed paid rows;
  2. one linked push is attempted;
  3. named counter after equals before plus one;
  4. named delta is exactly one;
  5. aggregate linked receipt is exactly two events;
  6. Dataset delivery count and paid count advance together.

The start event is automatic and separate. A final paid operation may report eventChargeLimitReached: true; that row remains delivered and paid, while later work is withheld.

Replay safety

replaySafe is true only before any Dataset push attempt in the current run. After a free or paid push attempt it is false. A new run always incurs a new automatic start event and can redeliver/recharge the same supplied records; stable IDs do not make Actor billing idempotent.

Pricing

The Actor uses PAY_PER_EVENT:

  • automatic Actor start event;
  • result-found for one delivered normalized licensed property record.

Free diagnostic rows do not intentionally emit result-found. Unknown or anomalous operations require reconciliation and are never promised free.

Base FREE-tier prices before subscription discounts:

  • Actor start: $0.005
  • normalized property record: $0.002
Delivered recordsResult subtotalStartBase total
1$0.002$0.005$0.007
10$0.020$0.005$0.025
50$0.100$0.005$0.105
100$0.200$0.005$0.205

The live pricing panel and current-run receipt are authoritative. Higher tiers receive the configured discounts. No proxy, browser, source API, or LLM variable cost is used by this runtime.

Baku and Azerbaijan context

The product retains a Baku-oriented Store identity because existing integrations and buyers use that scope. The modern contract does not infer geography from a URL or title. Supply location and coordinates only from your authorized source.

Azerbaijani property labels such as satılır, kirayə, mənzil, 2 otaq, and floor descriptions may be preserved as source text. The Actor does not translate, reinterpret, standardize legal categories, or convert Azerbaijani manat.

Do not treat a district name, map point, or description as cadastral evidence. Do not infer title, zoning, earthquake compliance, occupancy, tenant status, or municipal permission from a normalized listing row.

Azərbaycan dilində qısa izah

Bu Actor Tap.az saytına və ya başqa əmlak portalına sorğu göndərmir. O, yalnız sizin qanuni şəkildə istifadə etməyə icazəniz olan strukturlaşdırılmış əmlak məlumatlarını normallaşdırır. Hər ödənişli sətir mənbə identifikatorunu, təqdim edilmiş faktları, mənbə və lisenziya qeydlərini, yenilik göstəricisini, boşluqları, insan yoxlaması üçün növbəti addımı və cari icranın KVS hesablaşma istinadını saxlayır.

Məlumatı göndərməzdən əvvəl şəxsi əlaqə məlumatlarını, məxfi URL parametrlərini və lazımsız şəxsi məlumatları çıxarın. Nəticə mülkiyyət hüququnu, elanın aktivliyini, qiyməti, hüquqi statusu və ya investisiya uyğunluğunu təsdiqləmir; insan yoxlaması tələb olunur. Köhnə Tap.az giriş sahələri yalnız miqrasiya diaqnostikası yaradır və heç bir portal sorğusu və ya result-found ödənişi yaratmır.

Sources and rights

You must hold rights that cover:

  1. obtaining the export;
  2. processing it in your Apify workspace;
  3. transforming fields and storing digests;
  4. commercial use where applicable;
  5. sharing with intended recipients;
  6. retaining descriptions and images;
  7. required attribution and change indication;
  8. deletion or correction obligations.

Public visibility is not a redistribution licence. Robots allowance is not a commercial licence. Buyer authorization cannot replace owner, agent, portal, database, photographer, or other rightsholder permission when such permission is required.

The current Actor does not request Tap.az. If you independently possess a Tap.az export, use it only if written rights cover the intended processing and downstream use. The Actor does not review or extend those rights.

Privacy and responsible use

Property exports can contain seller names, agent contacts, phone numbers, email addresses, tenant information, free-text personal data, occupied-home details, precise coordinates, or image URLs.

Before submission:

  • remove direct personal contacts unless strictly necessary and lawfully processed;
  • remove people, documents, license plates, access codes, or sensitive interior details from images where required;
  • avoid exact coordinates when district-level location is sufficient;
  • minimize descriptions;
  • do not put secrets or session tokens in URLs;
  • establish purpose, access controls, retention, deletion, and correction workflows;
  • honor applicable data-protection, real-estate, advertising, consumer, database, and copyright rules;
  • prohibit harassment, discrimination, unlawful profiling, tenant targeting, occupancy inference, and unsafe site visits;
  • treat hashes and stable IDs as pseudonymous linkage, not anonymization.

Apify persists run input and storage according to workspace settings. Do not submit secrets or unnecessary personal information.

Decision routing

Fresh and complete supplied evidence

Route with normal priority to a person who can verify availability, price, facts, source rights, and intended use.

Stale export

Route with high priority for a refresh from the authorized provider. Do not assume that a listing remains active.

Missing location, rooms, area, or posting time

Keep review-required. Ask the source owner for missing evidence instead of inventing values.

Duplicate source identity

Correct the upstream export. The Actor suppresses duplicate paid work but does not select a winning version.

Invalid record

Inspect the schema, fix the source mapping, and start a new run only after accounting for the separate start charge.

Unknown delivery or settlement

Do not blind-retry. Reconcile the exact platform run, Dataset ID, KVS ID, named-event counters, and OUTPUT first.

Commercial playbooks

Agency inventory review

  1. Export only listings the agency may process and share.
  2. Preserve agent/source identity and authorization evidence outside the Actor.
  3. Supply listing IDs, facts, timestamps, URLs, licence, and changes.
  4. Normalize a single row first.
  5. Reconcile Dataset and KVS.
  6. Verify availability and facts with the responsible agent.
  7. Route approved records to the intended channel.

Licensed feed onboarding

  1. Archive the licence and data dictionary.
  2. Record permitted fields, territories, recipients, attribution, and retention.
  3. Map source IDs without changing their meaning.
  4. Keep photos and descriptions only when licensed.
  5. Use licensed_property_feed.
  6. Review gaps and stale evidence.
  7. Scale only after one-row acceptance.

Internal portfolio normalization

  1. Use buyer_owned_property_export for records controlled by your organization.
  2. Keep internal property IDs stable.
  3. State how prices and areas were transformed.
  4. Avoid presenting internal estimates as portal facts.
  5. Retain review-required decisions.

Migration from historical Tap.az scope

  1. Existing flat fields continue to parse.
  2. Observe the free migration diagnostic.
  3. Obtain an authorized structured export.
  4. Map it to listings.
  5. Add licence and change disclosure.
  6. Run one bounded canary.
  7. Remove assumptions about portal crawling from downstream code.

Integration recipes

Apify API

Start with the modern JSON input. Poll the exact run. Then read:

GET /v2/datasets/{defaultDatasetId}/items
GET /v2/key-value-stores/{defaultKeyValueStoreId}/records/OUTPUT

Require OUTPUT.runId and resultsUrl to bind to the same current run before accepting rows.

Webhook

Treat a run-finished webhook as notification only. Fetch and validate OUTPUT, inspect failure and unknown counts, then fetch Dataset rows. Do not interpret webhook delivery as property-record settlement.

Warehouse

Use stableId as the natural identity and retain rowDigest, input digest, request digest, source retrieval time, observed time, source context, licence, and changes made.

Same stable ID plus same digest means the same normalized version. Same stable ID plus a different digest means review a changed supplied record. It does not prove a portal edit or live market change.

Map or GIS workflow

Coordinates are supplied and unverified. Validate datum, precision, authorization, and privacy before mapping. Never expose precise occupied-home coordinates merely because they were present in the export.

CRM or property-management system

Do not blind-import. Verify target schema, permitted fields, identity mapping, source rights, availability, and record ownership. Preserve the safeToAutomate: false control.

Spreadsheet review

The Dataset overview exposes price, currency, type, rooms, area, location, URL, freshness, confidence, action, evidence, failure, and billing intent. Nested JSON can be lossy in CSV; keep the original JSON receipt for audit.

Operating guide

Before a run

  • Confirm source rights and image rights.
  • Remove unnecessary personal data.
  • Validate durable source listing IDs.
  • Normalize timestamps to UTC.
  • Decide freshness threshold.
  • Set a bounded maximum charge.
  • Start with one record.
  • Decide who performs human review.

After a run

  1. Check platform terminal status.
  2. Read current-run KVS OUTPUT.
  3. Bind run and Dataset identities.
  4. Inspect input partitions.
  5. Inspect paid, free, withheld, and unknown partitions.
  6. Require exact named +1 per paid row.
  7. Review partial and fatal state.
  8. Review each Dataset decision and evidence block.
  9. Verify listing facts and rights outside the Actor.
  10. Do not retry an unknown operation automatically.

Monitoring

Alert on:

  • failed status;
  • any unknown delivery or settlement;
  • fatal error;
  • unexpected withheld work;
  • rising invalid or duplicate counts;
  • stale records;
  • changed licence or transformation disclosure;
  • Dataset count mismatch;
  • nonzero network request claim;
  • any downstream system attempting to override safeToAutomate: false.

Reliability model

The runtime fails closed around identity, pricing, and settlement:

  • hosted run ID required;
  • current Dataset ID required;
  • exact two-event pricing map required;
  • exact tier prices required;
  • visible start spend required;
  • initial result counter zero for bounded canary;
  • pre-push counter equals confirmed paid count;
  • one linked push per row;
  • named delta exactly one;
  • aggregate receipt exactly two;
  • no blind retry;
  • exact current-run KVS receipt;
  • one bounded KVS recovery write;
  • failed terminal state when the truth cannot be proven.

JSON Schema is the structural stage. Runtime validateRow and validateOutput are mandatory semantic stages for exact digest, evidence, decision, work, delivery, source, and terminal relations.

FAQ

Does this Actor scrape Tap.az?

No. The current runtime contains no source-fetch path and makes zero external source requests.

Why keep the old slug?

To preserve Actor identity and API integration continuity while replacing the source-incompatible product behavior.

Is it affiliated with Tap.az?

No. It is independent and does not imply endorsement, access, permission, or verification.

Can I process a Tap.az export?

Only when you possess rights covering the export, processing, commercial use, fields, images, retention, and downstream recipients. The Actor does not grant or verify them.

Does it verify active listings?

No. It does not fetch the listing URL. Active status is always an explicit confidence gap.

Does it verify the price or currency?

No. It validates numeric and text shape only. No appraisal, FX lookup, or source check occurs.

Does it provide investment advice?

No. It normalizes supplied evidence and requires human review.

Are images downloaded?

No. Up to five HTTPS references are recorded. The Actor does not fetch, inspect, resize, license, or moderate them.

Is an HTTPS URL trusted?

No. Syntax validation is not source verification or network safety proof.

Are duplicates billed?

Valid duplicate source identities are suppressed before paid work. A free diagnostic reports them.

Are invalid records billed?

Invalid records are excluded from paid work. A free diagnostic can report them when the Dataset write channel is confirmed free.

Does a Dataset row prove payment?

No. It contains settlement-neutral intent. Read the current-run KVS receipt.

What happens at the charge limit?

The Actor stops before unaffordable work. Already confirmed rows remain; remaining eligible work is withheld.

Can I retry a failed push?

Not blindly. A thrown push may have an unknown outcome. Reconcile manually first.

Is the run replay-safe?

Only before any push attempt. A new run can redeliver and recharge the same records and always has a separate start event.

Does it track listing changes?

No. change.status is not_measured. Compare stable IDs and row digests in your own licensed system.

Does freshness prove availability?

No. It measures age of the supplied retrieval timestamp.

Is confidence an accuracy score?

No. It is deterministic contract completeness with explicit gaps.

Why is automation marked unsafe?

Because rights, availability, price, facts, ownership, images, privacy, and downstream policy are not independently verified.

Can I submit 1,500 records as before?

The modern contract is intentionally bounded at 100 records per run for exact review and settlement. Split larger authorized exports into independently reconciled runs. Legacy max_items remains accepted only for migration.

Are Azerbaijani labels translated?

No. Supplied text is normalized for whitespace but not translated or legally interpreted.

Does source_portal mean portal-verified?

No. It is a compatibility alias for the supplied source name.

Why is the field called scraped_at?

Backward compatibility. It equals processing observedAt; the current runtime does not scrape.

Can it contact agents?

No. No outbound message, webhook, email, or call is made.

Can it identify a seller from images or descriptions?

No. Do not use this product for identity inference or personal profiling.

What audit evidence should I retain?

Keep the original authorized export, written rights evidence, exact Actor input, build and run IDs, Dataset and KVS IDs, current-run OUTPUT, row digests, and your review decision.

Where is the final truth?

Dataset rows contain normalized evidence. KVS OUTPUT contains current-run work and settlement truth. External source and legal truth must come from your authorized provider and review process.

Support checklist

Provide non-secret:

  • build ID and run ID;
  • platform terminal status;
  • Dataset and KVS IDs;
  • OUTPUT status and failure code;
  • input counters;
  • delivered, paid, free, withheld, and unknown counters;
  • stable ID and row digest;
  • modern versus legacy mode;
  • expected and observed behavior.

Do not publish access tokens, confidential licence text, owner contacts, tenant details, access instructions, or sensitive property information in support requests.

Final boundary

This Actor is a normalization, evidence, review, and settlement layer for property exports you already have the right to use. It is not a crawler, portal licence, valuation service, investment product, title search, legal opinion, property inspector, identity verifier, or automated decision system. Source rights, privacy, copyright, listing verification, physical safety, review, retention, and downstream use remain the buyer’s responsibility.