SEC EDGAR 의 자료 주소(data.sec.gov, www.sec.gov)에 프로그램으로 요청을 보내면
자료 대신 403 Forbidden 이 돌아오는 경우가 있습니다. 주소가 틀린 것도, 자료가 없는 것도 아닙니다.
SEC 가 「누가 보내는 자동 요청인지 밝히지 않았다」 고 보고 막은 것입니다.
실제로 보내 본 결과
2026년 9월 17일, 애플의 제출 목록 주소(data.sec.gov/submissions/CIK0000320193.json)에
User-Agent 헤더만 바꿔 가며 같은 요청을 보냈습니다.
| 보낸 User-Agent | 결과 |
|---|---|
| (비워 보냄) | 403 |
curl/8.9.1 — curl 기본값 | 403 |
Python-urllib/3.12 — 파이썬 표준 라이브러리 기본값 | 403 |
python-requests/2.32.3 — requests 기본값 | 403 |
Hong Gildong [email protected] — 이름과 이메일 | 200 (정상) |
막힌 것은 전부 도구가 알아서 붙이는 기본값이었습니다. 코드에서 헤더를 따로 정하지 않았다면 바로 이 경우입니다. 막혔을 때 돌아오는 화면은 이렇습니다.
고치는 법 — 이름과 이메일을 적어 보낸다
SEC 는 인증키를 발급하지 않습니다. 대신 요청마다 User-Agent 에
이름(또는 회사명)과 연락처 이메일을 적어 보내라고 안내합니다.
Hong Gildong [email protected]
같은 날 data.sec.gov 에서는 Mozilla/5.0 처럼 브라우저 흉내만 낸 값도 통과했습니다.
그런데 원문 파일이 있는 www.sec.gov 는 curl 로 같은 흉내 값을 보내자 403 으로 막았습니다.
주소마다 거르는 기준이 다르고 언제든 바뀔 수 있으므로, 흉내 값에 기대지 말고 이름과 이메일을 적어 보내는 편이 안전합니다.
연락처를 넣었는데도 막힐 때
요청이 너무 빠를 때
SEC 의 요청 상한은 초당 10건이고, 쓰는 컴퓨터 수와 상관없이 합쳐서 셉니다. 반복문을 쉬지 않고 돌리거나 여러 창에서 동시에 돌리면 한동안 막힙니다. 미국공시 수집기가 초당 8건으로 스스로 제한하는 것도 이 때문입니다.
이름을 한글로 적었을 때
HTTP 헤더에는 한글을 그대로 싣기 어려워, 도구에 따라 오류가 나거나 한글 부분이 빠진 채 나갑니다. 이름은 로마자로 적으세요. 미국공시 수집기는 한글을 자동으로 걸러 냅니다.
알아 둘 것
넣은 이메일은 요청 헤더에 실려 SEC 서버 기록에 남습니다. 개인 주소가 꺼려지면 회사 대표 주소를 써도 됩니다.