NativePort

Extract the content you need from a web page

Read an article as Markdown or pull specific fields from a page. Compare scraping APIs, see how each approach works, and try a request with your own URL.

Start with the output you need

If you want the page text for an AI app, try a Markdown or text response first. For a page whose content is already present in the HTML, a basic fetch may be enough.

When a page loads its content with JavaScript, choose browser rendering. Proxy options can also help with sites that restrict automated requests. Both can affect the cost, so use them when your target pages need them.

For product details or other specific fields, you can use extraction rules or describe the fields with a JSON schema. Schema-based extraction can reduce the need to maintain selectors, but check the returned values against your source pages.

The example below uses Firecrawl to return Markdown. Other providers use their own request formats; your NativePort key stays the same when you try them.

Try it step by step

Try a request

This Firecrawl request returns a page as Markdown. Replace the example URL with a page you want to read.

curl
curl https://api.nativeport.ai/firecrawl/v2/scrape \
  -H "Authorization: Bearer $NATIVEPORT_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{"url": "https://example.com", "formats": ["markdown"]}'
example response
{
  "success": true,
  "data": {
    "markdown": "# Example Domain\n\nThis domain is for use in...",
    "metadata": {
      "title": "Example Domain",
      "sourceURL": "https://example.com",
      "statusCode": 200
    }
  }
}

Compare providers

Compare starting prices and the tasks each provider supports. Features and usage affect the total cost. For measured results, see the benchmarks and how we test.

ProviderBest suited forStarting price
Firecrawl Read pages as Markdown or request fields with a JSON schema. $0.0032 per call
Jina Read the main content of a page from its URL. $0.0001 per call
Spider Collect content from a page or a website crawl. metered by Spider
Tavily Retrieve page content for a search or research workflow. $0.008 per call
Exa Find pages and retrieve content for your app. metered by Exa
ScrapingBee Render JavaScript and extract fields with rules. $0.00098 per call
Scrapfly Render a page and extract the content you need. $0.00015 per call
ZenRows Fetch pages with optional browser rendering. metered by ZenRows
ScraperAPI Fetch page HTML through managed proxies. $0.00049 per call
Crawlbase Fetch page content, with a JavaScript option. metered by Crawlbase
Serper Look up places and request their reviews. $0.001 per call

Build on an example

Set your NativePort API key and adapt an example to your own data. Outputs below illustrate the response format.

Start collecting a documentation site for your AI app

Starts a crawl job. Check Firecrawl pricing and set a page limit before running it.
python
# Standard library only — nothing to pip install.
import json, os, urllib.request

def post(path, payload):
    req = urllib.request.Request(
        "https://api.nativeport.ai" + path,
        data=json.dumps(payload).encode(),
        headers={
            "Authorization": f"Bearer {os.environ['NATIVEPORT_API_KEY']}",
            "Content-Type": "application/json",
        },
    )
    with urllib.request.urlopen(req) as r:
        return json.load(r)

job = post("/firecrawl/v2/crawl", {
    "url": "https://docs.example.com",
    "limit": 100,
    "scrapeOptions": {"formats": ["markdown"]},
})
print(job["id"])
example output
$ python crawl_docs.py
8f2a1c04-6b3e-4f77-9a15-2c0d9e7b4411

Let your agent read a web page

One request per URL. Check the Jina provider page for current pricing.
curl
curl https://api.nativeport.ai/jina/reader/https://example.com \
  -H "Authorization: Bearer $NATIVEPORT_API_KEY"

More ways to use these APIs

Convert a page to Markdown

Use Jina Reader to turn a URL into readable content, or request Markdown from Firecrawl when you also need its page metadata. This is a useful starting point when your next step is to pass the text to a model.

Jina · Firecrawl · /jina/reader/<url>

Scrape prices and listings from a marketplace

If a marketplace loads listings with JavaScript, enable rendering before extracting prices and other fields. The ZenRows route is a general scraper, so you need to maintain the extraction for your target site. A site-specific Apify actor is another option to investigate where one is available.

ZenRows · /zenrows?url=…

Scrape reviews and ratings

For Google reviews, look up the place with /serper/places, then use its identifier with /serper/reviews. A rating shown on another website may need to be extracted from that page. Check whether you need the review text, the rating, or both before choosing a request.

Serper · /serper/places → /serper/reviews

Capture a screenshot of a webpage

Capture a page as a PNG with Browserless. A screenshot can help you inspect what a page displayed when its extracted text looks unexpected. Steel and Spider also offer screenshot options to compare.

Browserless · /browserless/screenshot

Extract an article and its details

Zyte can return article fields such as the headline, body, author, and date. If you only need readable text, compare a Markdown response from Firecrawl or Jina. Choose the format that fits what your app will do next.

Zyte · /zyte

Collect pages across a website

Start a crawl to discover pages and collect their content. Choose Markdown for text-based workflows or an HTML format when you need the markup. The website crawling guide shows how to start the job, check progress, and set a page limit.

Firecrawl · /firecrawl/v2/crawl

Look up search volume and ranking for a keyword

Use DataForSEO’s live endpoints to request keyword metrics or search results for rank tracking. These use separate requests. The SEO data guide explains which data to request and how to use it in a report.

DataForSEO · /dataforseo/v3/…/live

Convert a curl command into code

An AI model can help turn a curl example into code in the language you use. Send the example and the language you want in a chat-completions request, then review the generated code before running it. See the AI model guide for the available models.

NativePort Inference · /inference/v1/chat/completions

Use it with NativePort

Use one NativePort key to test the scraping providers listed here. Your balance covers each request, with no separate provider subscription required.

Before you start

Do I need a subscription to each provider?

No. You can use the listed providers with your NativePort key and shared balance. Check the pricing page for how usage is billed.

What happens if the website blocks a request?

NativePort returns the provider’s error and status code. Your app can then decide whether to retry with different options or use another provider. Retries are not automatic.

How should I compare providers?

Try the same representative URLs with each option. Check whether you get the content and format you need, then compare the cost of the complete request, including rendering or extraction features.

Try it with $5 in credits