Providers
| Needs | ||||
|---|---|---|---|---|
| Steelsteel | one call | 4 / 13 | STEEL_API_KEY | 12,348 chars of html |
| Browserbasebrowserbase | one call | 3 / 13 | BROWSERBASE_API_KEY | 209 chars of markdown |
| Kernelkernel | in a session | 6 / 13 | KERNEL_API_KEY | 12,363 chars of html |
| Browserlessbrowserless | one call | 8 / 13 | BROWSERLESS_API_KEY | 12,364 chars of html |
| Hyperbrowserhyperbrowser | one call | 7 / 13 | HYPERBROWSER_API_KEY | 167 chars of markdown |
| Anchoranchor | no scrape | 3 / 13 | ANCHOR_API_KEY | refused, no page |
| Cloudflarecloudflare | one call | 10 / 13 | CF_API_TOKEN and CF_ACCOUNT_ID | 886 chars of markdown |
| Playwrightplaywright | one call | 9 / 13 | no key | 917 chars of text |
Flags come from capabilities() on a live instance, read when this site was built. The last column is one recorded browsers_scrape of https://example.com per provider, so you can see what "scrape" means to each of them. Sort by it. The spread is the whole reason this package exists.
Picking one
For a first try, or anything on your own machine, Playwright. No key, no bill, real Chromium.
For a lot behind one key, Cloudflare. Links, extract, crawl jobs and the accessibility tree all come out of Browser Run.
For search, Hyperbrowser, the provider with a search route. The grid on the home page shows who else has what.
For a remote browser you drive yourself over CDP, any of them except Playwright. That's where Kernel, Browserbase and Anchor make more sense than their scrape column suggests.
Missing a vendor? Custom providers is one file.