Article Outline Structure Extractor avatar

Article Outline Structure Extractor

Pricing

from $6.50 / 1,000 content page scanneds

Go to Apify Store
Article Outline Structure Extractor

Article Outline Structure Extractor

Extract article outlines from public pages including headings, intro patterns, media sections, tables, lists, CTAs, FAQs, and schema-backed article...

Pricing

from $6.50 / 1,000 content page scanneds

Rating

0.0

(0)

Developer

junipr

junipr

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

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, and NewsArticle JSON-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.

FieldPurposeDefault / cap
articleUrlsPublic article URLsempty
startUrlsAdditional public article URLsempty
sitemapUrlsPublic XML sitemapsempty
htmlInputsCaptured records with sourceUrl and HTMLempty
includeHeadingHierarchyEmit one row per ordered headingtrue
includeMediaInventoryCount images, video, audio, and iframestrue
includeTablesListsCount tables and liststrue
minimumArticleTextLengthFlag visible text below this character count200; range 0–100,000
maxSectionsPerPageMaximum emitted heading rows per page50, maximum 250
maxPagesMaximum fetched pages1 by default, maximum 25
allowedDomainsOptional hostname allowlistempty
includeEvidenceKeep evidence excerpts in rowstrue
includeRawSnapshotsStore accepted raw page HTMLfalse
maxChargeUsdStop before the next event exceeds this amount15 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:

  • articleUrl identifies the accepted article;
  • headline, authorName, publishedDate, and updatedDate preserve observed metadata;
  • headingLevel, headingText, and sectionOrder describe the emitted outline section;
  • mediaCount, tableCount, and faqCount summarize structural elements;
  • outlineJson contains the complete ordered heading array, counts, visible text length, and every structural issue for the page;
  • issueCode distinguishes a normal outline section from a structural finding or source diagnostic;
  • evidenceSnippet, recommendation, canonicalUrl, httpStatus, and scannedAt support 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

EventPrice (USD)When charged
actor-start0.0100after successful startup
content-page-scanned0.0065once for each accepted content source unit
outline-section-extracted0.00295before each paid outline section row
structure-finding-emitted0.00295before each paid structural finding or diagnostic row
audit-report-generated0.0800before 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.