scarnox-python
Official Python client for the Scarnox captcha-solving API.
One call in, one token out. No task ids, no polling loop, and you only pay for captchas that were actually solved.
from scarnox import Scarnox
client = Scarnox() # reads SCARNOX_KEY from the environment
token = client.solve(site_key="SITEKEY", site_url="https://example.com/signup").token
Why Scarnox
- Synchronous:
solve()returns the token. There is no create-then-poll dance to write or debug. - Pay per success: failed solves are never charged. Proxyless solving is $0.75 per 1,000 successful solves (pricing).
- Retries built in: the client follows the API's retry policy. Busy and timeout errors back off with jitter, an unsolvable board gets one more try, and account errors are raised straight away.
- No proxy needed: bring your own proxy only if the target site checks that the token was solved from the same IP that submits it.
Install
pip install scarnox
Get an API key at solver.scarnox.com/register, then:
export SCARNOX_KEY=scarnox_XXXXXXXXXXXXXXXXXXXX
Usage
from scarnox import Scarnox, ScarnoxError
client = Scarnox()
try:
s = client.solve(
site_key="SITEKEY", # the page's data-sitekey attribute
site_url="https://example.com/signup", # the page the captcha is on
# proxy="http://user:pass@host:port", # optional: solve through your own IP
# invisible=True, # optional: invisible widget (no checkbox)
)
print(s.token, s.cost, s.balance)
except ScarnoxError as e:
print(e.code, e.description) # e.g. ERROR_INSUFFICIENT_BALANCE
Submit the token right away. Tokens expire within about two minutes. Put it in the page's h-captcha-response field (and g-recaptcha-response if present), or pass it to the widget's JavaScript callback.
Playwright
examples/playwright_example.py opens a page, reads its sitekey, solves it, fills the response fields and submits the form, in about 30 lines.
Balance
client.balance() # 9.994 (USD)
Every successful solve also returns balance, so most integrations never call this.
Errors
e.code |
what to do |
|---|---|
ERROR_NO_SLOT_AVAILABLE, ERROR_CAPTCHA_TIMEOUT, ERROR_INTERNAL, ERROR_TOO_MANY_REQUESTS |
retried for you with backoff |
ERROR_CAPTCHA_UNSOLVABLE |
retried once for you |
ERROR_INSUFFICIENT_BALANCE |
top up at solver.scarnox.com |
ERROR_KEY_INVALID |
check SCARNOX_KEY |
ERROR_PROXY_REQUIRED, ERROR_PROXY_FAILED |
pass a working proxy= |
Full list: API docs.
Links
- Docs: https://solver.scarnox.com/docs
- OpenAPI spec: https://solver.scarnox.com/openapi.json
- Guides: Python · Playwright & Puppeteer · Error handling
License
MIT
Metadata
Release files for scarnox 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| scarnox-0.1.0.tar.gz | 6.9 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| scarnox-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 13.1 kB
Release files / scarnox-0.1.0.tar.gz
| Download URL | scarnox-0.1.0.tar.gz |
|---|---|
| Size | 6.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bee7424a85c0879d3c0188f11d896bb1aec2758cf81453f0b16a177e69a5cb1b
|
|
BLAKE2b-256 checksum How to use checksums |
0bd587bf5058a8541640e828ed8d21c41de90c9a184fb5f5e3dfc445c77cc225
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / scarnox-0.1.0-py3-none-any.whl
| Download URL | scarnox-0.1.0-py3-none-any.whl |
|---|---|
| Size | 6.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8dc70c9c66f340c8a9e00d2a34748800bea3d83278a95c4a26ef29cb39eb050f
|
|
BLAKE2b-256 checksum How to use checksums |
37a23e22509f683a80ede25434f32c0b9f6b39d4556aca9cf5eec80fa030c947
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Security for scarnox 0.1.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.