Article Outline Structure Extractor
Pricing
from $6.50 / 1,000 content page scanneds
Article Outline Structure Extractor
Extract article outlines from public pages including headings, intro patterns, media sections, tables, lists, CTAs, FAQs, and schema-backed article...
Turn public article pages into ordered, source-linked outlines. The Actor extracts article metadata, H1–H6 hierarchy, section order, media counts, table and list counts, FAQ signals, visible text length, and explicit structural findings.
Use it for content research, editorial inventories, migration planning, heading-hierarchy audits, and structured content briefs. The output describes what is present in the supplied page; it does not generate new headings or pretend that every article should follow the same structure.
What the Actor observes
- an
<article>region when present, otherwise the accepted page HTML; - visible H1 through H6 headings in source order;
- heading-level jumps, such as H2 directly to H4;
- absence of a visible H1;
- visible article text length compared with your configured minimum;
- images, video, audio, and iframe elements;
- tables, ordered lists, and unordered lists;
- visible details/FAQ markers;
Article,BlogPosting, andNewsArticleJSON-LD metadata;- visible author and publication date as a fallback when structured metadata is absent.
Empty pages, access-denied responses, human-verification pages, and pages without visible headings return diagnostic rows. Missing metadata remains null rather than being inferred.
Input
Supply public URLs in articleUrls, additional URLs in startUrls, bounded XML sitemaps in sitemapUrls, or captured records in htmlInputs.
| Field | Purpose | Default / cap |
|---|---|---|
articleUrls | Public article URLs | empty |
startUrls | Additional public article URLs | empty |
sitemapUrls | Public XML sitemaps | empty |
htmlInputs | Captured records with sourceUrl and HTML | empty |
includeHeadingHierarchy | Emit one row per ordered heading | true |
includeMediaInventory | Count images, video, audio, and iframes | true |
includeTablesLists | Count tables and lists | true |
minimumArticleTextLength | Flag visible text below this character count | 200; range 0–100,000 |
maxSectionsPerPage | Maximum emitted heading rows per page | 50, maximum 250 |
maxPages | Maximum fetched pages | 1 by default, maximum 25 |
allowedDomains | Optional hostname allowlist | empty |
includeEvidence | Keep evidence excerpts in rows | true |
includeRawSnapshots | Store accepted raw page HTML | false |
maxChargeUsd | Stop before the next event exceeds this amount | 15 USD maximum |
Example:
{"articleUrls": ["https://publisher.example/guides/reliable-queues","https://publisher.example/guides/idempotent-jobs"],"includeHeadingHierarchy": true,"includeMediaInventory": true,"includeTablesLists": true,"minimumArticleTextLength": 800,"maxSectionsPerPage": 60,"maxPages": 2,"allowedDomains": ["publisher.example"],"maxChargeUsd": 3}
Set includeHeadingHierarchy to false when you want a single summary row per accepted article. Set the minimum text length to 0 to disable that finding. The Store default supplies no article and returns a nonempty source_required diagnostic.
Dataset output
Each row contains common provenance and outline fields:
articleUrlidentifies the accepted article;headline,authorName,publishedDate, andupdatedDatepreserve observed metadata;headingLevel,headingText, andsectionOrderdescribe the emitted outline section;mediaCount,tableCount, andfaqCountsummarize structural elements;outlineJsoncontains the complete ordered heading array, counts, visible text length, and every structural issue for the page;issueCodedistinguishes a normal outline section from a structural finding or source diagnostic;evidenceSnippet,recommendation,canonicalUrl,httpStatus, andscannedAtsupport auditing.
headingLevel and sectionOrder are integers for ordinary outline rows and null for source diagnostics. Counts become null when their extraction toggle is off. The full outlineJson remains attached to each section row so downstream exports do not have to join against another store.
Understanding findings
The first emitted section carries page-wide findings such as minimum text length or missing H1. A heading-level jump is also associated with the relevant heading row. These signals are mechanical checks, not editorial verdicts: a heading choice may be appropriate for a specific publishing system or accessibility pattern.
Blocked sources and pages without visible headings do not yield fabricated outlines. Their diagnostic rows use null metadata and an outlineJson.issues array describing the reason.
Reports
When includeReport is enabled, key-value storage receives a Markdown summary, a full CSV, issue rows in JSON, bounded evidence excerpts, and run metadata. Raw HTML snapshots are written only when explicitly enabled.
Pay-per-event pricing
| Event | Price (USD) | When charged |
|---|---|---|
actor-start | 0.0100 | after successful startup |
content-page-scanned | 0.0065 | once for each accepted content source unit |
outline-section-extracted | 0.00295 | before each paid outline section row |
structure-finding-emitted | 0.00295 | before each paid structural finding or diagnostic row |
audit-report-generated | 0.0800 | before report artifacts are stored |
Apify platform usage pass-through is off. maxChargeUsd is evaluated before every event. A partial, rejected, or over-budget charge stops the run before the related dataset or report write.
Safety and responsible interpretation
Only public HTTP and HTTPS pages are fetched. Loopback and private IPv4 targets are rejected, optional domain allowlists narrow the accepted hosts, and page counts and timeouts remain bounded. Discovered links are not crawled. The Actor does not bypass authentication, paywalls, or human-verification controls.
HTML parsing cannot see text that was never present in the accepted response. For JavaScript-rendered publishers, provide captured HTML from an authorized workflow. Review extracted metadata, accessibility implications, and editorial context before changing live headings or content architecture.