Home / Developers / Filing to PDF
API reference

Filing to PDF

Turn any EDGAR filing, exhibit or filing index page into a PDF with layout and images kept. Pass the sec.gov URL and get the PDF bytes back, ready to store, attach or show to a reviewer. Product overview →

Endpoints

/v1/pdf

GEThttps://secfeedapi.com/v1/pdf

Any filing or exhibit rendered to PDF.

ParameterTypeDescriptionExample
urlrequiredstringAny file under https://www.sec.gov/Archives/edgar/data/: a primary document, an exhibit, a .txt submission or a filing index page. sec.gov/ix?doc= viewer links are accepted.https://www.sec.gov/Archives/edgar/data/1045810/000104581026000021/nvda-20260125.htm

Request examples

Every response below is real output from the API, trimmed to the first records.

A filing index page as PDF

The index page lists every document in the filing; useful as a cover sheet.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/pdf?url=https://www.sec.gov/Archives/edgar/data/1045810/000104581026000078/0001045810-26-000078-index.htm"
import os, requests

r = requests.get(
    "https://secfeedapi.com/v1/pdf",
    params={'url': 'https://www.sec.gov/Archives/edgar/data/1045810/000104581026000078/0001045810-26-000078-index.htm'},
    headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
    timeout=60,
)
r.raise_for_status()
print(r.json())

A press release exhibit as PDF

An Exhibit 99.1 rendered with its tables and images.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/pdf?url=https://www.sec.gov/Archives/edgar/data/32604/000003260426000047/apensionrestatementxex991.htm"
import os, requests

r = requests.get(
    "https://secfeedapi.com/v1/pdf",
    params={'url': 'https://www.sec.gov/Archives/edgar/data/32604/000003260426000047/apensionrestatementxex991.htm'},
    headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
    timeout=60,
)
r.raise_for_status()
print(r.json())

A 10-K main document as PDF

The full annual report; the largest documents take the longest.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/pdf?url=https://www.sec.gov/Archives/edgar/data/1045810/000104581026000021/nvda-20260125.htm"
import os, requests

r = requests.get(
    "https://secfeedapi.com/v1/pdf",
    params={'url': 'https://www.sec.gov/Archives/edgar/data/1045810/000104581026000021/nvda-20260125.htm'},
    headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
    timeout=60,
)
r.raise_for_status()
print(r.json())

Response fields

FieldTypeMeaning
(body)binaryThe PDF file. Content-Type is application/pdf.
Title metadatastringThe PDF title is the HTML title of the source document.
errorstringOn failure the body is JSON with an error message instead of a PDF.

How to

How do I save the PDF with curl?

Add -o file.pdf to the request.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/pdf?url=https://www.sec.gov/Archives/edgar/data/32604/000003260426000047/apensionrestatementxex991.htm"
How do I convert an exhibit rather than the main filing?

Pass the exhibit's own URL. Get it from /v1/files for the filing.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/files?cik=32604&accessionNo=0000032604-26-000047"
Can I pass the sec.gov inline XBRL viewer link?

Yes. https://www.sec.gov/ix?doc=... links are rewritten to the archive file.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/pdf?url=https://www.sec.gov/ix?doc=/Archives/edgar/data/32604/000003260426000047/emr-20261013.htm"
How do I get a cover sheet listing every document?

Pass the filing index URL ending in -index.htm.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/pdf?url=https://www.sec.gov/Archives/edgar/data/32604/000003260426000047/0000032604-26-000047-index.htm"
What happens with documents that are already PDFs?

They are returned as filed, without re-rendering, for example the audited reports attached to X-17A-5 filings.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/pdf?url=https://www.sec.gov/Archives/edgar/data/844934/000084493426000001/Audit2026completedsigned.pdf"
How do I find the URL for a company's latest 10-K?

Search with the Filing Query API and use linkToFilingDetails, or list files with /v1/files.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/filings?query=ticker:NVDA%20AND%20formType:%2210-K%22&size=1"
Why do I get 400 for some URLs?

Only files under https://www.sec.gov/Archives/edgar/data/ are accepted.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/pdf?url=https://www.sec.gov/Archives/edgar/data/32604/000003260426000047/apensionrestatementxex991.htm"
How long does a large filing take?

A few seconds for most documents; very long 10-K filings take longer. Requests run two at a time per server, so space out bulk jobs.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/pdf?url=https://www.sec.gov/Archives/edgar/data/1045810/000104581026000078/0001045810-26-000078-index.htm"

Errors

See also the error codes every endpoint shares.

Try it with your own key

500 free calls a month.

Get free API key →