Click to try
Wait...

Build AI-powered brand protection
on reliable web infrastructure.

Monitor marketplaces, extract listing data, and automate brand protection workflows with APIs built for large-scale web data acquisition.

Trusted by the best startups startups in the world

Everything you need to power an IP protection platform.

From discovery to monitoring, Olostep provides the APIs and web data needed to build modern brand protection platforms.

Structured JSON for your AI pipelines

Clean Markdown for LLMs

Raw HTML when you need full page fidelity

Screenshots for visual evidence and audits

Searches

Search marketplaces and e-commerce websites to discover new product listings, sellers, and brand mentions before they reach your enforcement pipeline.

Your Search
Nike Air Max
Include
Amazon
Alibaba
Exclude
eBay
Amazon
eBay
Alibaba
AliExpress
Structured Results
https://amazon.com
Nike Air Max 270
Men's running shoes with Air cushioning...
https://alibaba.com/
Nike Air Max 270
Authentic Nike sneakers with fast shipping...

Crawls

Crawl marketplace pages at scale, follow product links, and collect clean HTML or Markdown for monitoring, enrichment, and AI workflows.

https://www.nike.com/t/air-max-270....
Depth 1
Depth 2
Depth 3
Crawled/ Included
Excluded by Rules

Scrapes

Extract product titles, prices, sellers, images, reviews, structured JSON, and screenshots from dynamic marketplace pages through a single API.

Your Request
https:/www.amazon
Extract product title, seller, price, images, reviews, and screenshots
Scraping
Browsers
Proxies
CAPTCHAs
Structured Result
Formats
HTML
Markdown
Text
PDF
Raw Bytes
Screenshot
Structured Data
{
 "title": "Nike Air Max 270",
 "price": "$149.99",
 "seller": "SneakerHub",
 "rating": "4.8",
 "brand": "Nike"
}

Monitors

Track listings over time and detect changes to prices, sellers, availability, or page content without repeatedly crawling the same URLs.

Monitor Configuration
Monitor Nike Air Max listings on Amazon and alert me when the price, seller, or availability changes.
Schedule
Every 6 hours
Alert Delivered
Change Summary
$149 → $139
Seller changed to
SneakerDeals
Email
Webhook
Sms

Batches

Process entire marketplaces at scale by running thousands of URLs in parallel with asynchronous jobs and reliable retries.

Input: URLs
1,000,000
amazon.com/1
amazon.com/2
amazon.com/3
amazon.com/4
amazon.com/5
amazon.com/6
amazon.com/n
Concurrent Batch Processing
Batch 1
Processing
Batch 2
Processing
Batch 3
Processing
Batch n
Processing
URLs Processed
1,000,000
Concurrent Batches
128
Throughput
48,752 /min
Total time
20m 14s

Built for Brand Protection Infrastructure

Structured JSON, HTML, Markdown, screenshots, browser automation,
and authenticated access through a single developer-first platform.

Get clean data from any URL

1# pip install olostep
2from olostep import Olostep
3
4client = Olostep(api_key="YOUR_REAL_KEY")
5
6result = client.scrapes.create(
7    url_to_scrape="https://en.wikipedia.org/wiki/Alexander_the_Great",
8    formats=["markdown", "html"],
9)
10
11print(result.markdown_content)
12print(result.html_content)
1// npm i olostep
2import Olostep from 'olostep'
3
4const client = new Olostep({ apiKey: 'YOUR_REAL_KEY' })
5
6const result = await client.scrapes.create({
7  url: 'https://en.wikipedia.org/wiki/Alexander_the_Great',
8  formats: ['markdown', 'html'],
9})
10
11console.log(result.markdown_content)
12console.log(result.html_content)
1curl -s -X POST "https://api.olostep.com/v1/scrapes" \
2  -H "Authorization: Bearer <YOUR_API_KEY>" \
3  -H "Content-Type: application/json" \
4  -d '{
5    "url_to_scrape": "https://en.wikipedia.org/wiki/Alexander_the_Great",
6    "formats": ["markdown", "html"]
7  }'

Crawl all the subpages

1# pip install olostep
2from olostep import Olostep
3
4client = Olostep(api_key="YOUR_REAL_KEY")
5
6crawl = client.crawls.create(
7    start_url="https://olostep.com",
8    max_pages=100,
9    include_urls=["/**"],
10    exclude_urls=["/collections/**"],
11    include_external=False,
12)
13
14print(crawl.id, crawl.status)
15
16# Wait for completion and iterate pages
17for page in crawl.pages():
18    print(page.url)
19    content = page.retrieve(["markdown"])
20    print(content.markdown_content[:200])
1// npm i olostep
2import Olostep from 'olostep'
3
4const client = new Olostep({ apiKey: 'YOUR_REAL_KEY' })
5
6const crawl = await client.crawls.create({
7  url: 'https://olostep.com',
8  maxPages: 100,
9  includeUrls: ['/**'],
10  excludeUrls: ['/collections/**'],
11  includeExternal: false,
12})
13
14console.log(crawl.id, crawl.status)
15
16// Wait for completion and iterate pages
17for await (const page of crawl.pages()) {
18  console.log(page.url)
19  const content = await client.retrieve({ retrieveId: page.retrieve_id, formats: ['markdown'] })
20  console.log(content.markdown_content.slice(0, 200))
21}
1# Start crawl
2curl -s -X POST "https://api.olostep.com/v1/crawls" \
3  -H "Authorization: Bearer <YOUR_API_KEY>" \
4  -H "Content-Type: application/json" \
5  -d '{
6    "start_url": "https://olostep.com",
7    "max_pages": 100,
8    "include_urls": ["/**"],
9    "exclude_urls": ["/collections/**"],
10    "include_external": false
11  }'
12
13# Check status (replace <CRAWL_ID>)
14curl -s "https://api.olostep.com/v1/crawls/<CRAWL_ID>" \
15  -H "Authorization: Bearer <YOUR_API_KEY>"
16
17# Get pages (replace <CRAWL_ID>)
18curl -s "https://api.olostep.com/v1/crawls/<CRAWL_ID>/pages" \
19  -H "Authorization: Bearer <YOUR_API_KEY>"
20
21# Retrieve content (replace <RETRIEVE_ID>)
22curl -s -G "https://api.olostep.com/v1/retrieve" \
23  -H "Authorization: Bearer <YOUR_API_KEY>" \
24  --data-urlencode "retrieve_id=<RETRIEVE_ID>" \
25  --data-urlencode "formats=markdown"

Get all the URLs on a website

1# pip install olostep
2from olostep import Olostep
3
4client = Olostep(api_key="YOUR_REAL_KEY")
5
6sitemap = client.maps.create(
7    url="https://docs.olostep.com",
8    include_urls=["/features/**"],
9    top_n=100,
10)
11
12print(f"Map ID: {sitemap.id}")
13
14# Iterate all URLs (handles pagination automatically)
15for url in sitemap.urls():
16    print(url)
1// npm i olostep
2import Olostep from 'olostep'
3
4const client = new Olostep({ apiKey: 'YOUR_REAL_KEY' })
5
6const map = await client.maps.create({
7  url: 'https://docs.olostep.com',
8  includeUrls: ['/features/**'],
9  topN: 100,
10})
11
12console.log(`Map ID: ${map.id}`)
13
14// Iterate all URLs (handles pagination automatically)
15for await (const url of map.urls()) {
16  console.log(url)
17}
1curl -s -X POST "https://api.olostep.com/v1/maps" \
2  -H "Authorization: Bearer <YOUR_API_KEY>" \
3  -H "Content-Type: application/json" \
4  -d '{
5    "url": "https://docs.olostep.com",
6    "include_urls": ["/features/**"],
7    "top_n": 100
8  }'

Process up to 10k URLs in one batch. Get results in 5-8 mins

1# pip install olostep
2from olostep import Olostep
3
4client = Olostep(api_key="YOUR_REAL_KEY")
5
6batch = client.batches.create(
7    urls=[
8        {"custom_id": "item-1", "url": "https://www.google.com/search?q=stripe&gl=us&hl=en"},
9        {"custom_id": "item-2", "url": "https://www.google.com/search?q=paddle&gl=us&hl=en"},
10    ],
11    parser="@olostep/google-search",
12)
13
14print(batch.id, batch.status)
15
16# Wait and iterate results (auto-waits for completion)
17for item in batch.items():
18    content = item.retrieve(["json"])
19    print(item.url, item.custom_id)
20    print(content.json_content)
1// npm i olostep
2import Olostep from 'olostep'
3
4const client = new Olostep({ apiKey: 'YOUR_REAL_KEY' })
5
6const batch = await client.batches.create([
7  { url: 'https://www.google.com/search?q=stripe&gl=us&hl=en', customId: 'item-1' },
8  { url: 'https://www.google.com/search?q=paddle&gl=us&hl=en', customId: 'item-2' },
9], {
10  parser: '@olostep/google-search',
11})
12
13console.log(batch.id, batch.total_urls)
14
15// Wait and iterate results (auto-waits for completion)
16for await (const item of batch.items()) {
17  const content = await item.retrieve(['json'])
18  console.log(item.url, item.custom_id)
19  console.log(content.json_content)
20}
1curl -s -X POST "https://api.olostep.com/v1/batches" \
2  -H "Authorization: Bearer <YOUR_API_KEY>" \
3  -H "Content-Type: application/json" \
4  -d '{
5    "items": [
6      {"custom_id": "item-1", "url": "https://www.google.com/search?q=stripe&gl=us&hl=en"},
7      {"custom_id": "item-2", "url": "https://www.google.com/search?q=paddle&gl=us&hl=en"}
8    ],
9    "parser": {"id": "@olostep/google-search"}
10  }'

Semantically search the Web

1# pip install olostep
2from olostep import Olostep
3
4client = Olostep(api_key="YOUR_REAL_KEY")
5
6search = client.searches.create("Latest updates with SpaceX")
7
8print(search.id, len(search.links))
1// npm i olostep
2import Olostep from 'olostep'
3
4const client = new Olostep({ apiKey: 'YOUR_REAL_KEY' })
5
6const search = await client.searches.create('Latest updates with SpaceX')
7
8console.log(search.id, search.links.length)
1curl -s -X POST "https://api.olostep.com/v1/searches" \
2  -H "Authorization: Bearer <YOUR_API_KEY>" \
3  -H "Content-Type: application/json" \
4  -d '{
5    "query": "Latest updates with SpaceX"
6  }'

Get answers from the Web

1# pip install olostep
2from olostep import Olostep
3
4client = Olostep(api_key="YOUR_REAL_KEY")
5
6answer = client.answers.create(
7    task="What does Olostep do and what is its core offering?",
8    json_format={"company": "", "what_it_does": "", "core_offering": ""},
9)
10
11print(answer.json_content)
12print(answer.sources)
1// npm i olostep
2import Olostep from 'olostep'
3
4const client = new Olostep({ apiKey: 'YOUR_REAL_KEY' })
5
6const answer = await client.answers.create({
7  task: 'What does Olostep do and what is its core offering?',
8  jsonFormat: { company: '', what_it_does: '', core_offering: '' },
9})
10
11console.log(answer.json_content)
12console.log(answer.sources)
1curl -s -X POST "https://api.olostep.com/v1/answers" \
2  -H "Authorization: Bearer <YOUR_API_KEY>" \
3  -H "Content-Type: application/json" \
4  -d '{
5    "task": "What does Olostep do and what is its core offering?",
6    "json": {"company": "", "what_it_does": "", "core_offering": ""}
7  }'

Monitor pages on a schedule and get change alerts

1import requests
2import json
3
4API_KEY = "<YOUR_API_KEY>"
5API_URL = "https://api.olostep.com/v1"
6
7# Create a monitor
8payload = {
9    "query": "Alert me when Tesla stock price is above $500",
10    "frequency": "every hour",
11    "email": "alerts@example.com"
12}
13
14headers = {
15    "Authorization": f"Bearer {API_KEY}",
16    "Content-Type": "application/json"
17}
18
19response = requests.post(f"{API_URL}/monitors", headers=headers, json=payload)
20monitor = response.json()
21monitor_id = monitor['id']
22
23print(f"Monitor created: {monitor_id}")
24print(f"Status: {monitor['status']}")
25
26# List all monitors
27monitors = requests.get(f"{API_URL}/monitors", headers=headers).json()
28for m in monitors['monitors']:
29    print(f"{m['id']}: {m['url']} ({m['frequency']})")
30
31# Get monitor details
32details = requests.get(f"{API_URL}/monitors/{monitor_id}", headers=headers).json()
33print(json.dumps(details, indent=2))
34
35# Delete a monitor
36requests.delete(f"{API_URL}/monitors/{monitor_id}", headers=headers)
37print(f"Monitor {monitor_id} deleted")
1const API_URL = 'https://api.olostep.com/v1'
2const headers = { 
3  'Authorization': 'Bearer <YOUR_API_KEY>', 
4  'Content-Type': 'application/json' 
5}
6
7// Create a monitor
8const res = await fetch(`${API_URL}/monitors`, {
9  method: 'POST',
10  headers,
11  body: JSON.stringify({
12    query: 'Alert me when Tesla stock price is above $500',
13    frequency: 'every hour',
14    email: 'alerts@example.com'
15  })
16})
17
18const monitor = await res.json()
19console.log(`Monitor created: ${monitor.id}`)
20console.log(`Status: ${monitor.status}`)
21
22// List all monitors
23const monitors = await fetch(`${API_URL}/monitors`, { headers }).then(r => r.json())
24monitors.monitors.forEach(m => console.log(`${m.id}: ${m.url} (${m.frequency})`))
25
26// Get monitor details
27const details = await fetch(`${API_URL}/monitors/${monitor.id}`, { headers }).then(r => r.json())
28console.log(details)
29
30// Delete a monitor
31await fetch(`${API_URL}/monitors/${monitor.id}`, { method: 'DELETE', headers })
32console.log(`Monitor ${monitor.id} deleted`)
1# Create a monitor
2curl -s -X POST "https://api.olostep.com/v1/monitors" \
3  -H "Authorization: Bearer <YOUR_API_KEY>" \
4  -H "Content-Type: application/json" \
5  -d '{
6    "query": "Track changes in product pricing and stock information",
7    "url": "https://example.com/products/widget-pro",
8    "frequency": "daily",
9    "email": "alerts@example.com"
10  }'
11
12# List all monitors
13curl -s "https://api.olostep.com/v1/monitors" \
14  -H "Authorization: Bearer <YOUR_API_KEY>"
15
16# Get monitor details (replace <MONITOR_ID>)
17curl -s "https://api.olostep.com/v1/monitors/<MONITOR_ID>" \
18  -H "Authorization: Bearer <YOUR_API_KEY>"
19
20# Delete a monitor (replace <MONITOR_ID>)
21curl -s -X DELETE "https://api.olostep.com/v1/monitors/<MONITOR_ID>" \
22  -H "Authorization: Bearer <YOUR_API_KEY>"

Access the websites other scraping tools struggle with.

Access JavaScript-heavy and authenticated websites with reliable browser automation.
Deploy Orbit for secure internal access.

JS Heavy Websites

Access JavaScript-rendered marketplaces and storefronts with fully rendered page content and structured data.

Account-Gated Websites

Access authenticated marketplaces and internal portals using managed sessions and secure authentication.

Reliable Browser Automation

Run browser sessions at scale with automatic retries, anti-bot handling, and reliable page rendering.

Orbit for internal deployments

Run browser automation inside your own environment with secure
access to authenticated websites and internal systems.

Designed to fit into your existing detection pipeline.

. Collect data from marketplaces, enrich your detection models, and feed results into
your existing enforcement and investigation workflows.

Marketplace

Continuously monitor marketplaces and e-commerce websites for new listings and seller activity.

Marketplaces
Amazon
eBay
Alibaba
AliExpress
Wallmart
more...

Olostep API and Orbit

Extract structured data, capture screenshots, and access authenticated websites through Olostep API and Orbit.

Olostep + Orbit

JS Rendering
Authentication
Screenshots

Your Detection Models

Analyze extracted data to detect infringements and automate brand protection workflows.

Counterfeit Product
Unauthorized Seller
Logo Misuse
Trademark Match

Pricing that Makes Sense

Most cost-effective web data API on the market

No credit card required

Trial

$0
Includes:
500 successful requests
All requests are JS rendered + utilizing residential IP addresses
Low rate limits
Get started
COST/1K $1.800

Starter

$9
/ month
Everything in Free, Plus:
5000 successful requests
150 concurrent requests
Purchase now
COST/1K $0.495

Standard

$99
/ month
Everything in Starter, Plus:
200K successful requests
500 concurrent requests
Purchase now
COST/1K $0.399

Scale

$399
/ month
Everything in Standard, Plus:
1 Million successful requests
AI-powered Browser Automations
Purchase now

Top-ups

Have spiky usage or don't like subscriptions?
You can buy credit packs. They are valid for 6 months.

Credit pack

10k credits

$20
Purchase Credit Pack
Credit pack

250k credits

$200
Purchase Credit Pack
Credit pack

2M credits

$1000
Purchase Credit Pack

Enterprise

Hundreds of millions of credits with enterprise-grade reliability. We offer custom discounts
Contact Sales

Trusted by Amazing Teams Building the Future of AI

Michelle Julia
Co-founder & CEO Aurium

Olostep is the best!!! We automated entire data pipelines with just a prompt

Richard He
Co-founder & CEO Openmart

Olostep has become the default Web Layer infrastructure for our company

Max Brodeur-Urbas
Co-founder & CEO Gumloop

Olostep works like a charm! And your customer service is exceptional

Rob Hayes
Co-founder Merchkit

Olostep lets us turn any website into an API. Great product, great people

Brandon Cohen
Co-founder & CTO CivilGrid

I highly recommend Olostep, great product!

Co-founder & CEO Gedd.it

We verify coupon codes at scale. Love Olostep. It works on any e-commerce

Trevor West
Co-founder & CEO Podqi

Olostep is the best API to search, extract, and structure data from the Web. Happy to be customers

Rida Naveed
Co-founder Zecento

We use /batches combined with parsers and it's magical how we can get structured data at large scale

Kieran V.
Growth PlotsEvents

Olostep allowed us to search and structure events data across the Web

Paul Mit
Founder Foundbase

Reliable and cost-effective API for working with data. Congrats on the cool product

Ready to power your brand protection platform?

Power marketplace monitoring, structured data extraction, and browser automation with APIs built for scale.

Are you an AI Agent? Get started here

Frequently asked questions

Product & Capabilities

What can I build with Olostep for brand protection?

Olostep provides the web data infrastructure needed to build marketplace monitoring, counterfeit detection, unauthorized seller tracking, trademark monitoring, and investigation workflows.

You can use its APIs to discover suspicious listings, extract structured product data, capture visual evidence, monitor changes, and send the results to your existing detection or enforcement systems.

How does Olostep help find potentially infringing listings?

Olostep’s Search API can search marketplaces and e-commerce websites for product names, brand mentions, seller profiles, and other relevant queries.

The discovered URLs can then be crawled, scraped, or monitored to collect the information your detection models need to evaluate each listing.

Which marketplaces can I monitor?

Olostep can collect data from major marketplaces and e-commerce websites, including platforms such as Amazon, eBay, Alibaba, AliExpress, and Walmart.

You can also configure searches, crawls, and extraction workflows for other publicly accessible, JavaScript-rendered, or supported authenticated websites.

What listing data can Olostep extract?

You can extract product titles, descriptions, prices, seller information, availability, images, ratings, reviews, URLs, and other page-level attributes.

Results can be returned as structured JSON, clean Markdown, HTML, raw content, or screenshots depending on the needs of your detection and investigation pipeline.

Can Olostep automatically detect counterfeit products?

Olostep collects and structures the web data required for counterfeit detection, but it does not replace your infringement rules, machine-learning models, or legal review process.

Your system can use Olostep data to identify signals such as suspicious pricing, unauthorized sellers, logo misuse, trademark matches, copied imagery, or inconsistent product information.

Can I capture screenshots as evidence?

Yes. Olostep can capture screenshots of marketplace and product pages alongside the extracted listing data.
These screenshots can support internal audits, case reviews, seller investigations, evidence collection, and enforcement workflows where a visual record of the page is required.

Can Olostep process large volumes of marketplace listings?

Yes. The Batch API is designed to process large URL sets through parallel, asynchronous jobs with retries.
This allows brand protection platforms to evaluate listings across multiple marketplaces without operating their own proxy networks, browser clusters, scraping infrastructure, or job-processing systems.

Can Olostep access JavaScript-heavy or account-gated websites?

Olostep supports browser automation for JavaScript-rendered marketplaces and storefronts.
For account-gated websites, managed sessions and authenticated browser workflows can be used where supported. Orbit can also run browser automation within your own environment when secure access to internal or authenticated systems is required.

Can Olostep integrate with my existing detection platform?

Yes. Olostep is designed to function as the web data layer inside an existing brand protection stack.
You can send structured results to your detection models, investigation tools, dashboards, databases, alerting systems, or enforcement workflows through APIs and webhooks. SDK and request examples are available for Python, Node.js, and cURL.

Does Olostep handle enforcement and takedown requests?

Olostep focuses on discovery, data collection, monitoring, and evidence capture.
The extracted data can be passed into your existing enforcement process, legal review system, case-management platform, or marketplace takedown workflow. This lets your team retain control over infringement decisions and enforcement actions.

Usage & Automation

Can Olostep monitor listings for changes?

Yes. The Monitor API can track listing pages on a schedule and detect changes to fields such as price, seller, availability, or page content.

Instead of repeatedly rebuilding and rerunning crawlers, your system can receive change summaries and route relevant updates into alerts, dashboards, webhooks, or investigation queues.

What is the difference between Searches, Crawls, Scrapes, and Monitors?

Searches help you discover relevant listings, sellers, and brand mentions across the web.
Crawls follow links and collect multiple related pages from a website or marketplace.
Scrapes extract specific listing data, structured fields, page content, and screenshots.
Monitors revisit selected pages on a schedule and notify your system when something changes.

These capabilities can be combined into one end-to-end brand protection workflow.

Can I define the data I want using a prompt?

Yes. You can describe the information you want to extract using natural-language instructions.
Prompt-based extraction is useful for testing new workflows and processing unfamiliar page structures. For predictable, high-volume production workflows, structured parsers can provide more consistent JSON outputs.

Pricing & Plans

Can I test Olostep before integrating it?

Yes. Olostep offers a free plan with 500 successful requests and does not require a credit card.

You can use the trial to test marketplace access, extraction quality, screenshots, structured outputs, and integration requirements before selecting a paid or enterprise plan.