# Changelog of Structured Data Extractor: JSON-LD, Schema.org, Open Graph (`rowcraft/structured-data-extractor`) Actor

- **URL**: https://apify.com/rowcraft/structured-data-extractor/changelog.md
- **Full Actor documentation**: https://apify.com/rowcraft/structured-data-extractor.md

## Changelog

### 1.0.3 (2026-10-17)

- Fix: a robots.txt served as an HTML page (catch-all page or a redirect to the home page, for example thumb.wikimedia.org) counted as an anti-bot block, so every page on that host was refused; it is now treated as a missing robots.txt, as the standard says. Real anti-bot pages are still recognised.

### 1.0.2 (2026-10-17)

- Shared library: URL-like fields named link or guid (feed items) are no longer flagged as phone numbers; retry log line now reads "retry n/m".
- Shared library: an HTML page where JSON was expected (maintenance or block page, seen on 17.10.2026 at the Polish KRS API and at Workday) is retried and then reported with the page text instead of crashing the run on a parse error.

### 1.0.1 (2026-10-16)

- README: real screenshots of the input form and of the results (Console).
- Icon uploaded in Console; two example tasks run on the platform.

### 1.0.0 (2026-10-15)

First release.

- Reads JSON-LD, Microdata and RDFa Lite (schema.org terms) and the Open Graph and Twitter Card tags of each page into one flat row of 49 fields.
- Product, organization, breadcrumb, article, event, FAQ and how-to fields; validation issue codes against the required and recommended properties in the Google documentation; `richResultEligible`.
- People are never read: Person objects are skipped, organization telephone, e-mail, contact points and street addresses are never read, and the optional raw JSON-LD is cleaned the same way.
- Optional discovery of more pages of the same site through the sitemap (robots.txt, sitemap index, gzip) and the internal links, with a page limit per site; option to deliver only pages that have structured data.
- robots.txt obeyed on every host (Crawl-delay too), anti-bot pages never charged, only new rows by data fingerprint, webhook notification, charge limit, run summary and coverage record.
