SDS/MSDS PDF Parser — 16 Sections & Changes avatar

SDS/MSDS PDF Parser — 16 Sections & Changes

Pricing

Pay per usage

Go to Apify Store
SDS/MSDS PDF Parser — 16 Sections & Changes

SDS/MSDS PDF Parser — 16 Sections & Changes

Convert English or German SDS/MSDS PDFs into 16-section JSON with page evidence, identifiers, warnings, OCR fallback, and optional revision comparison.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Sergei Pechenov

Sergei Pechenov

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

3

Monthly active users

6 days ago

Last modified

Categories

Share

SDS/MSDS PDF Parser — 16 Sections, Evidence & Changes

Convert English or German safety data sheet PDFs into deterministic JSON: all detected SDS sections, source pages, product and chemical identifiers, extraction warnings, and optional revision differences.

Use this Actor for EHS document intake, supplier onboarding, SDS inventories, release monitoring, n8n/Make workflows, and machine-readable evidence for agents. It runs locally inside the Actor container and does not send documents to an AI provider.

What you get

  • Sections 1–16 with heading, full normalized text, start/end page, and evidence excerpt.
  • Product name, revision date, CAS/EC numbers, H/P statements, and UN numbers with page evidence.
  • Text extraction from normal PDFs and English/German OCR fallback for scanned PDFs.
  • Warnings for missing, duplicate, or out-of-order sections, sparse OCR, and missing revision dates.
  • Optional section-by-section comparison with a previous SDS revision.
  • A failed Dataset item for a bad document without losing successful documents in the same batch.
  • A failed run if no document can be parsed. Mixed batches preserve successful documents and report status: "partial" in SUMMARY; check each Dataset item's status.
  • Up to three download attempts for temporary HTTP errors (408, 429, 500, 502, 503, 504), with short bounded waits. Persistent failures are reported, never replaced with an unrelated PDF.

This is automated document extraction. It does not determine chemical correctness, legal validity, or regulatory compliance.

Try it

{
"documentUrls": ["https://example.com/safety-data-sheet.pdf"],
"language": "auto",
"ocrMode": "auto"
}

To compare revisions, provide one current document and previousDocumentUrl or previousDocument.

Output example

{
"status": "ok",
"sourceUrl": "https://example.com/sds.pdf",
"extractionMethod": "text",
"pageCount": 14,
"sectionCount": 16,
"identifiers": {
"productName": { "value": "Example solvent", "page": 1 },
"casNumbers": [{ "value": "67-64-1", "page": 3 }]
},
"sections": [{
"number": 1,
"title": "Identification",
"evidence": { "heading": "SECTION 1: Identification", "startPage": 1, "endPage": 1 }
}],
"warnings": [],
"changes": [{ "section": 1, "status": "unchanged" }]
}

Limits and privacy

  • Up to 5 PDFs per run, 15 MB and 50 pages per document.
  • Public HTTPS URLs or an uploaded PDF; private/reserved network targets and URL credentials are blocked.
  • OCR supports English and German in the MVP.
  • Password-protected/corrupt PDFs may fail explicitly.
  • Temporary processing files are deleted after each document. Normalized results remain in the run's Apify storage according to your storage settings.
  • Do not upload documents you are not allowed to process.

Method

The Actor uses Poppler pdftotext -layout for embedded text. If that text is missing or sparse, pdftoppm renders at bounded resolution and Tesseract performs local OCR. Section boundaries use English and German SDS headings; identifiers use deterministic patterns. Every claim in the Dataset is tied to a source page or extraction warning.

Support

Open a GitHub Issue with a public sample URL, expected section, actual warning, and run ID. Never attach confidential SDS files to a public issue.