Quick answer
SearchCans Reader API is a Jina Reader alternative for teams that want web extraction and SERP search in one prepaid credit pool. Standard Reader extraction costs 2 credits per successful request. Jina Reader uses token-based billing. Compare actual page output, access requirements, concurrency, and total spend before migrating a RAG pipeline.
This comparison separates documented capabilities from workload-dependent results. Product and pricing references were checked on October 11, 2026. It does not claim a measured speed or extraction-quality advantage for either service.
Quick Comparison Table
| Decision | SearchCans Reader API | Jina Reader |
|---|---|---|
| Billing unit | 2 credits for standard extraction; proxy options add credits | Output-token usage, with basic free access |
| Request pattern | POST a URL to /api/v1/url with a Bearer key | Prefix a URL with r.jina.ai; key-based access is available |
| Output | Markdown in a JSON response; request HTML with html: 1 | Markdown and configurable output, including JSON |
| JavaScript pages | Enable mode: 1 and validate the rendered result | Browser and selector controls |
| Capacity | Account Parallel Lanes limit concurrent in-flight requests | RPM and token limits depend on the access tier |
| Starting access | 100 free credits, up to 50 standard Reader requests without proxy add-ons | Basic access without a key: 20 requests per minute, not per day |
Pricing Analysis: Compare the Same Workload
SearchCans Reader API pricing
A standard Reader API call costs 2 credits. The following request costs assume standard extraction, no paid proxy option, and use of the purchased credits before expiry.
| Credit pack | Upfront price | Credits | Standard Reader cost per 1,000 requests |
|---|---|---|---|
| Standard | $18 | 20,000 | $1.80 |
| Starter | $99 | 132,000 | $1.50 |
| Pro | $597 | 995,000 | $1.20 |
| Ultimate | $1,680 | 3,000,000 | $1.12 |
The $1.12 rate requires the Ultimate pack; it is not a $1.12 minimum purchase. Credit packs start at $18, do not renew automatically, and remain valid for six months. Unused credits affect your effective cost. Review the current pricing and credit rules before budgeting.
For a standard Reader request, proxy: 0 adds no proxy credits; proxy: 1 adds 2, proxy: 2 adds 5, and proxy: 3 adds 10. For example, shared proxy extraction uses 4 credits in total, twice the standard extraction cost. See proxy tiers for the supported options.
Jina Reader billing
Jina’s documented model counts output tokens rather than a fixed price per extraction. Output length and selected options matter. A rate quoted per million tokens cannot be compared directly with a rate per 1,000 requests. Estimate token usage on the same page set before comparing costs.
A cost calculation you can reproduce
For 100,000 standard Reader extractions, SearchCans consumes 200,000 credits before proxy add-ons. At the Ultimate unit rate, that usage represents $112 of credits, but purchasing Ultimate still costs $1,680 upfront. This is a usage calculation, not a $112 monthly plan or a customer case study.
Record successful extractions, requests that need a paid proxy, expired unused credits, and the provider’s billed usage. Divide actual spend by usable documents. A low advertised unit price is not enough if the output misses the paragraphs your application needs.
Output Quality Comparison
Check the document, not a claimed similarity score
Use a small representative set of your own pages: articles, documentation, tables, and JavaScript pages. Save the source, extraction options, and output together. Check headings, paragraph completeness, links, and table cells against the source. Do not treat a successful HTTP response as proof of complete extraction.
This guide does not report a 1,000-URL benchmark, a percentage accuracy score, or a measured winner. Those claims require a published corpus, test settings, scoring rules, and results that a reader can reproduce.
SearchCans response fields
Read the extracted text from data.markdown. With html: 1, inspect data.html as well. Do not assume every response contains author, publication date, image captions, or a separate links array. Metadata may be absent in the source or unavailable in the selected output.
{
"code": 0,
"data": {
"markdown": "Example extracted Markdown from the requested page"
}
}
This is a minimal illustrative response, not a captured result or a completeness guarantee. Preserve your requested URL separately so citations do not depend on optional metadata.
Performance and JavaScript Handling
Latency depends on source response time, rendering, proxy mode, timeout, and concurrent load. Measure both median and p95 latency on your own URLs, together with usable-output rate. Do not compare a cached static page on one provider with an uncached browser-rendered page on the other.
On SearchCans, set mode: 1 for browser rendering. Authentication walls, source restrictions, and complex page behavior can still prevent useful extraction. Select a timeout that suits your job and check that the returned document contains the expected content.
Parallel Lanes are concurrent requests, not guaranteed requests per second. Keep your worker count within the account’s lanes, handle transient failures, and measure completion rate. There is no hourly request cap, but this does not mean unlimited concurrency. See Parallel Lanes and rate-limit behavior.
Integration Difficulty
SearchCans Reader API integration
This Python example extracts one accessible URL without a paid proxy. Set SEARCHCANS_API_KEY in your environment; do not put a real key in source control.
import os
import requests
target_url = "https://www.searchcans.com/google-search-api/"
response = requests.post(
"https://www.searchcans.com/api/v1/url",
headers={"Authorization": f"Bearer {os.environ['SEARCHCANS_API_KEY']}"},
json={"t": "url", "s": target_url, "mode": 1, "proxy": 0, "d": 30000},
timeout=40,
)
response.raise_for_status()
result = response.json()
if result.get("code") != 0:
raise RuntimeError("Reader API returned an application error")
markdown = (result.get("data") or {}).get("markdown")
if not isinstance(markdown, str) or not markdown.strip():
raise ValueError("No usable Markdown was returned")
print(markdown)
Migration from Jina Reader
Switch the request adapter, authentication, and response parser together. Keep the rest of your ingestion pipeline unchanged for the initial test.
- Send the source URL in SearchCans’
srequest field rather than prefixing it to the extraction service URL. - Use the SearchCans Bearer key and check the HTTP response plus application
code. - Read
data.markdownrather than treating the entire response body as the extracted document. - Test static and JavaScript pages, missing fields, empty output, timeouts, and concurrent jobs before changing your production adapter.
Start with the Reader API reference and retain the old adapter during the test. A migration is complete when your downstream chunks and citations remain correct, not when one sample request succeeds.
Use Case Recommendations
When SearchCans is worth testing
- You already know the URLs to extract, or find them through SERP search.
- You want prepaid credits shared by search and extraction without a recurring subscription.
- You can validate Markdown completeness and manage your own ingestion queue.
When to keep your existing Jina integration
Keep it when it already satisfies your output requirements and measured cost. Test a replacement on a separate batch before assuming a switch will improve quality or reduce spend. Document the reason for migrating, such as billing fit or using one search-and-extraction account.
Frequently Asked Questions
Is SearchCans always cheaper than Jina Reader?
No. Request-based credits and token-based usage require a workload-specific calculation. Include your actual pack purchase, output length, proxy usage, and unused credits before deciding.
Can I try SearchCans without paying?
New users receive 100 credits with no payment method required to start. That covers up to 50 standard Reader requests if those credits are used only for extraction without proxy add-ons. Search requests and other API options also consume the shared balance.
Does a successful response prove the page was extracted correctly?
No. Check for missing sections, challenge pages, and navigation-only output before indexing the text in your application.
Does SearchCans have unlimited concurrency?
No. Concurrent in-flight requests are limited by the account’s Parallel Lanes. Plan workers around those lanes and check application errors as well as HTTP status.
Next Steps
Start with 100 free credits, test your URLs in the Playground, and compare the results with your existing extraction output.
Continue with building a RAG pipeline with Reader API or review SERP API pricing comparisons if your workflow also needs search.
Record the measured billing unit
Before converting Jina pricing into a cost per URL, record the current account tariff, chargeable token count and included request options. Keep the official rate separate from a workload estimate. For SearchCans, record the credits actually consumed and any proxy add-on. Use the same source URLs and an agreed completeness check for both outputs.
| Input | Meaning |
|---|---|
| attempted_urls | All attempted reads, including recorded failures |
| accepted_outputs | Outputs passing the same task-specific checks |
| observed_charge | Charge reported by the tested account or billing record |
| effective_cost | observed_charge / accepted_outputs; undefined when accepted_outputs is zero |
These are calculation inputs, not measured vendor results. A per-token tariff and a per-request tariff cannot be compared by substituting “one page” for both denominators. See Jina’s current Reader limits and token accounting before selecting a rate. For task-based alternatives, use the Jina Reader selection guide; for code, use the Python reading tutorial.