This release is a pre-release and may not be stable for production use.
SWE Internship Scraper
A command-line tool for finding software engineering internships on official public job boards.
Quick start
You do not need to clone or download this repository to use the scraper. Install the package with Python 3.10–3.14, then run a small sample scan. The CSV file is written to the folder where you run the command.
Windows PowerShell:
py -m pip install --pre swe-internship-scraper
py -m swe_scraper scan --quick --output internships.csv
macOS or Linux:
python3 -m venv .venv
.venv/bin/python -m pip install --pre swe-internship-scraper
.venv/bin/python -m swe_scraper scan --quick --output internships.csv
Open internships.csv in a spreadsheet. --quick checks the small set of monitored
boards; it is a sample, not the full catalog. Omit --quick for the default
priority boards, or use --target-set all for the entire catalog. The --pre
install flag is needed while the first release is a release candidate; it can be
removed for stable 1.0.0.
Want to run the source code you downloaded from GitHub? Follow the source checkout guide. It has exact Windows and macOS/Linux commands, without requiring PowerShell activation.
What you install
swe-internship-scraper is the main package. It includes the command and six
providers: Greenhouse, Lever, Ashby, Workday, SmartRecruiters, and Oracle.
The separate swe-scraper-icims package is an optional, experimental plugin
for public iCIMS portals. Most users only need the main package. See the
plugin guide if you have an iCIMS portal to scan.
The repository contains scraper code and a public employer catalog. It does not include an application tracker, personal data, or applicant ranking rules.
Commands
py -m swe_scraper scan --output internships.csv
py -m swe_scraper scan --location "New York" --output nyc-internships.csv
py -m swe_scraper scan --target-set all --output all-internships.csv
py -m swe_scraper providers
py -m swe_scraper --help
The installed swe-scraper command is equivalent to py -m swe_scraper on
Windows or python3 -m swe_scraper in a Python environment on macOS/Linux.
For JSON output, use a .json filename. See the
full command guide for custom targets, watching, health
checks, and deduplication reports.
Output and deduplication
Schema v2 keeps the familiar primary job fields and adds:
sources: every provider, source ID, and direct application URL represented by the record;merge_evidence: the rule and confidence for each merged source.
Exact canonical URLs and provider/source identities have confidence 1.0. Semantic merging requires canonical company, equivalent title including season and year, and equivalent location. Uncertain pairs remain separate and can be written to the optional deduplication audit.
Primary record selection uses completeness and stable lexical tie breakers, so thread completion order does not change output. See the schema reference and the v2 migration guide.
Development
Read CONTRIBUTING.md, the provider guide, and the support policy before opening an issue or pull request.
License
MIT
Release files for swe-internship-scraper 1.0.0rc2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| swe_internship_scraper-1.0.0rc2.tar.gz | 59.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| swe_internship_scraper-1.0.0rc2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 116.3 kB
Release files / swe_internship_scraper-1.0.0rc2.tar.gz
| Download URL | swe_internship_scraper-1.0.0rc2.tar.gz |
|---|---|
| Size | 59.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
50d818664127fbad7b4030bfe7697667f2e94cb57bee544c48bf715fc0d31e9e
|
|
BLAKE2b-256 checksum How to use checksums |
b9b52321637c80b4ac1849e443b8610ae4be1c033897cf70a7b01d36a7cfe06b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.
Transparency logRelease files / swe_internship_scraper-1.0.0rc2-py3-none-any.whl
| Download URL | swe_internship_scraper-1.0.0rc2-py3-none-any.whl |
|---|---|
| Size | 57.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2ae9cae861c71ec47d20d1f541ed9e26e7492bf68231e801d5ab8b0402201473
|
|
BLAKE2b-256 checksum How to use checksums |
708594afa6374befd8c88b9afefafc466a3a6562ead056f881e72b570bfa6cd2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.
Transparency log