Unofficial Devpost API client with resilient scraping, typed models, and CLI tooling.
Project description
devpost-api
Unofficial Devpost API and scraping client for hackathon scouting workflows.
Why use this package
- No runtime dependencies (stdlib only)
- Typed models and predictable public API
- Built-in retries, exponential backoff, and rate-limit handling
- Optional request throttling, cache, and parallel fetch
- CLI designed for scripts (
json,jsonl,csv,table)
Naming and install model
- Install package:
pip install devpost-api - Python import path:
import devpost_api - CLI command:
devpost-api
Install
pip install devpost-api
From source:
pip install -e ".[dev]"
Quickstart (Python)
from devpost_api import DevpostClient, RetryConfig
client = DevpostClient(
retry_config=RetryConfig(max_attempts=4, backoff_factor=0.5),
max_workers=8,
min_request_interval=0.05,
cache_ttl=30.0,
)
for project in client.iter_software(query="ai", max_pages=2):
print(project.name)
batch = client.collect_projects(
[
"https://devpost.com/software/api",
"https://devpost.com/software/does-not-exist",
],
include_github=True,
)
print(len(batch.projects), len(batch.failures))
Quickstart (CLI)
# JSON (default)
devpost-api software --query ai --page 1
# CSV for shell pipelines
devpost-api --format csv --fields name,url software --query ai --page 1
# Batch project fetch from a file (one URL/slug per line)
devpost-api --format jsonl project --input-file projects.txt --with-github --best-effort
# Batch GitHub enrichment from stdin
printf "openai/openai-python\npsf/requests\n" | devpost-api github --stdin --best-effort --format table
If devpost-api is not on your PATH, use python -m devpost_api.cli ....
Public API
DevpostClient.list_software(page=1, query=None)DevpostClient.list_users(page=1)DevpostClient.list_hackathons(page=1, status=None)DevpostClient.iter_software(query=None, start_page=1, max_pages=None)DevpostClient.iter_users(start_page=1, max_pages=None)DevpostClient.iter_hackathons(status=None, start_page=1, max_pages=None)DevpostClient.get_project(slug_or_url, include_github=False, raise_on_error=True)DevpostClient.get_projects(slugs_or_urls, include_github=False, raise_on_error=True)DevpostClient.collect_projects(slugs_or_urls, include_github=False)DevpostClient.get_github_repo(url_or_owner_repo)DevpostClient.get_github_repos(urls_or_owner_repo, raise_on_error=True)DevpostClient.list_hackathon_project_urls(hackathon_slug_or_url, pages=1)DevpostClient.scout_hackathon_projects(hackathon_slug_or_url, pages=1, include_github=False, raise_on_error=True)DevpostClient.clear_cache()
Reliability knobs
--retries,--backoff,--max-backoff,--jitter--workersfor parallel bulk operations--min-intervalfor global request spacing--cache-ttlfor in-memory GET cache--best-effortfor batch item error tolerance
Development workflow
Run tests:
python -m unittest discover -s tests
Run quality checks:
ruff check .
mypy src
coverage run -m unittest discover -s tests
coverage report
Build and verify artifacts:
python -m build
python -m twine check dist/*
Notes
- This package is unofficial and not affiliated with Devpost.
- Use responsibly and comply with Devpost and GitHub terms/policies.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
devpost_api-1.0.2.tar.gz
(26.4 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file devpost_api-1.0.2.tar.gz.
File metadata
- Download URL: devpost_api-1.0.2.tar.gz
- Upload date:
- Size: 26.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
766ae03cd54ca8ce392241998cf8b7aff683eabb95537002d24b428a09f8f23d
|
|
| MD5 |
bbb9a0779fada155ad275c85993f5a6b
|
|
| BLAKE2b-256 |
6c9fb853cdee7a9627d228cf28409248fb502049967fe9e3f6022f412802b5fb
|
File details
Details for the file devpost_api-1.0.2-py3-none-any.whl.
File metadata
- Download URL: devpost_api-1.0.2-py3-none-any.whl
- Upload date:
- Size: 22.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03fa2035eddb1045130ae65f12513f76f1f035ca1664a93ddedc3e0882881ffd
|
|
| MD5 |
efb949cf832ed87f674c3c5e31936a0e
|
|
| BLAKE2b-256 |
eda446f82141fe4c6d6b2bde78e0dfddc7792ab142a888d82c22ea8c6cabbad5
|