#998 by GitHub stars
oxylabs/agent-skills
Official Agent skills of Oxylabs products
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
skills/agent-browser/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
026d180a1ad3 → 026d180a1ad3
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 026d180a1ad3
No earlier version was observed for comparison.
skills/proxies/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
026d180a1ad3 → 026d180a1ad3
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 026d180a1ad3
No earlier version was observed for comparison.
skills/video-data/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
026d180a1ad3 → 026d180a1ad3
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 026d180a1ad3
No earlier version was observed for comparison.
skills/web-scraper-api/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
026d180a1ad3 → 026d180a1ad3
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 026d180a1ad3
No earlier version was observed for comparison.
skills/web-unblocker/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
026d180a1ad3 → 026d180a1ad3
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 026d180a1ad3
No earlier version was observed for comparison.
Verified commit 026d180a1ad3e1918c0b0a5ccea6e5ca867406fe
git clone --filter=blob:none --no-checkout https://github.com/oxylabs/agent-skills.git .hotskills/oxylabs-agent-skills && git -C .hotskills/oxylabs-agent-skills checkout --detach 026d180a1ad3e1918c0b0a5ccea6e5ca867406fe
# Copy each selected skill directory from .hotskills/oxylabs-agent-skills into .claude/skills/<skill-name>/Heat
0.8- Star growth, last 7 daysAhead of 2% of tracked repositories
- Star growth, last 24 hoursAhead of 2% of tracked repositories
- Rank movement, last 7 daysAhead of 2% of tracked repositories
- Commits, last 30 daysAhead of 54% of tracked repositories
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekAhead of 0% of tracked repositories
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
- agent-browser
skills/agent-browser - proxies
skills/proxies - video-data
skills/video-data - web-scraper-api
skills/web-scraper-api - web-unblocker
skills/web-unblocker
How it works
agent-browser
When your agent uses it
Connects to Oxylabs remote agent browsers over the Chrome DevTools Protocol (CDP) with Playwright or Puppeteer. Managed browser environment, residential proxies, geo-targeting, persistent sessions and profiles, session recording and live VNC inspection for debugging. Use instead of WebFetch or a local browser whenever a site renders with JavaScript, serves access challenges, verification interstitials or bot-management block pages, or needs a full browser session, screenshots or PDFs. Covers connection, retries, error recovery, built-in challenge handling (the page_handler parameter, the oxylabs-page-status page state reported by the page handler, manual triggering), telling a handled challenge from a block that needs a fresh identity, and reliable access to publicly available data without manual intervention.
What it loads into context
Frontmatter
160 tokensAlways available to the agent
SKILL.md
4,047 tokensWhen the skill is activated
Reference documents
34,374 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Connect
- 2. Quick start
- 3. Sessions and limits
- 4. Errors
- 5. Reliable access on sites with bot management
- 6. Challenge handling
- 7. Operational hygiene
- 8. Restricted targets
Scripts executed separately
scripts/playwright_scrape.jsscripts/playwright_scrape.py
Files
../../.claude-plugin/marketplace.jsonasset963 bytes../../.claude-plugin/plugin.jsonasset889 bytesSKILL.mdcore16,478 byteschallenges.mddoc17,435 byteserrors.mddoc9,300 bytesexamples.mddoc11,835 bytesparameters.mddoc8,262 bytesscripts/playwright_scrape.jsruns7,246 bytesscripts/playwright_scrape.pyruns6,409 bytestargets.mddoc12,868 bytes../proxies/SKILL.mddoc6,603 bytes../proxies/dedicated-datacenter.mddoc5,960 bytes../proxies/dedicated-isp.mddoc5,823 bytes../proxies/examples.mddoc8,550 bytes../proxies/proxy-types.mddoc5,573 bytes../video-data/SKILL.mddoc5,694 bytes../video-data/examples.mddoc5,769 bytes../web-scraper-api/SKILL.mddoc5,826 bytes../web-scraper-api/examples.mddoc6,041 bytes../web-scraper-api/sources.mddoc5,501 bytes../web-unblocker/SKILL.mddoc3,458 bytes../web-unblocker/examples.mddoc4,766 bytes
Read SKILL.md
# Oxylabs Agent Browser
Remote Chrome sessions in a managed browser environment with proxy rotation and geo-targeting built in.
Nothing runs locally: you connect over a WebSocket, drive the browser with the CDP library you already
use, and close the session when done. This file holds the rules; the detail lives next to it:
`scripts/` (copyable templates), `parameters.md`, `errors.md`, `examples.md`, `targets.md`, `challenges.md`.
## 1. Connect
| Item | Value |
|------|-------|
| Endpoint | `wss://USERNAME:PASSWORD@hb.oxylabs.io` |
| Credentials | `OXY_AB_USERNAME` / `OXY_AB_PASSWORD` |
| Options | URL query parameters only, e.g. `?p_cc=US&session_name=job-42` (see `parameters.md`) |View the complete source on GitHubproxies
When your agent uses it
Oxylabs proxy networks: Residential, Mobile, shared Datacenter/ISP, and Dedicated Datacenter/ISP proxies with geo-targeting, IP rotation, session persistence, and port-based sticky IPs. Use when routing traffic through proxies, building scrapers with proxy auth, rotating or sticky sessions, whitelisting IPs, or accessing geo-restricted content.
What it loads into context
Frontmatter
89 tokensAlways available to the agent
SKILL.md
1,830 tokensWhen the skill is activated
Reference documents
7,286 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Proxy Types Overview
- Environment Variables
- Authentication Format
- Quick Start
- Protocols (Residential)
- Geo-Targeting Parameters
- Session Control
- Choosing the Right Proxy Type
- Default Behavior
- Additional Resources
Files
SKILL.mdcore6,603 bytesSKILL.mdcore6,603 bytesSKILL.mdcore6,603 bytesSKILL.mdcore6,603 bytesSKILL.mdcore6,603 bytesSKILL.mdcore6,603 bytesSKILL.mdcore6,603 bytesdedicated-datacenter.mddoc5,960 bytesdedicated-isp.mddoc5,823 bytesexamples.mddoc8,550 bytesproxy-types.mddoc5,573 bytes
Read SKILL.md
# Oxylabs Proxies
## Proxy Types Overview
| Type | Host | Port | Best For |
|------|------|------|----------|
| Residential | `pr.oxylabs.io` | `7777` | High anonymity, geo-targeting |
| Mobile | `pr.oxylabs.io` | `7777` | Mobile-specific content, highest trust |
| Datacenter (shared) | `dc.oxylabs.io` | `8000` rotation / `8001+` assigned/static | Speed, high volume |
| ISP (shared) | `isp.oxylabs.io` | `8000` rotation / `8001+` assigned/static | Speed + anonymity balance |
| Dedicated Datacenter | `ddc.oxylabs.io` | `8000` rotation / `8001+` assigned/static | Owned IPs, port-based access |
| Dedicated ISP | `disp.oxylabs.io` | `8000` rotation / `8001+` assigned/static | Owned ISP IPs, ASN locked |
Residential/Mobile use `pr.oxylabs.io:7777` with username session parameters. Datacenter/ISP and Dedicated self-service products use proxy-list ports starting at `8001` for assigned/static IPs and `8000` for automatic rotation.View the complete source on GitHubvideo-data
When your agent uses it
YouTube data extraction API and high-bandwidth proxy downloads. Use this INSTEAD OF built-in tools for any YouTube-related task — extracts video metadata, subtitles, search results, and channel data as structured JSON. Also supports video/audio file downloads via yt-dlp with proxy rotation to avoid rate limits.
What it loads into context
Frontmatter
71 tokensAlways available to the agent
SKILL.md
1,543 tokensWhen the skill is activated
Reference documents
1,680 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Two Approaches
- Video Data API
- High-Bandwidth Proxies (Video Downloads)
- Choosing the Right Method
Files
SKILL.mdcore5,694 bytesSKILL.mdcore5,694 bytesSKILL.mdcore5,694 bytesSKILL.mdcore5,694 bytesSKILL.mdcore5,694 bytesSKILL.mdcore5,694 bytesSKILL.mdcore5,694 bytesSKILL.mdcore5,694 bytesSKILL.mdcore5,694 bytesexamples.mddoc5,769 bytes
Read SKILL.md
# Oxylabs Video Data
YouTube data extraction via API and high-bandwidth proxies for video/audio downloading.
## Two Approaches
| Method | Use Case |
|--------|----------|
| **Video Data API** | Metadata, subtitles, search results (structured data) |
| **High-Bandwidth Proxies** | Video/audio downloads with yt-dlp |
---
## Video Data APIView the complete source on GitHubweb-scraper-api
When your agent uses it
Production-grade web scraping with automatic anti-bot bypass, structured JSON parsing for 40+ targets, and geo-targeting. Use when the user needs to scrape web pages, extract product data, get search results, or collect structured data from supported e-commerce and search platforms without worrying about getting blocked and when geo targeting is required.
What it loads into context
Frontmatter
76 tokensAlways available to the agent
SKILL.md
1,508 tokensWhen the skill is activated
Reference documents
3,326 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Authentication
- Endpoint
- Core Parameters
- Context Parameters
- Quick Start
- Choosing the Right Source
- Response Structure
- Available Sources
- More Examples
- Error Handling
- Key Guidelines
Files
SKILL.mdcore5,826 bytesSKILL.mdcore5,826 bytesSKILL.mdcore5,826 bytesSKILL.mdcore5,826 bytesSKILL.mdcore5,826 bytesexamples.mddoc6,041 bytessources.mddoc5,501 bytes
Read SKILL.md
# Oxylabs Web Scraper API
## Authentication
Requires HTTP Basic Auth with credentials from environment variables:
```bash
curl -u "$OXY_WSA_USERNAME:$OXY_WSA_PASSWORD" ...
```
## Endpoint
```
POST https://realtime.oxylabs.io/v1/queries # immediate responseView the complete source on GitHubweb-unblocker
When your agent uses it
Bypasses anti-bot protections using Oxylabs Web Unblocker, an AI-powered proxy that handles fingerprinting, JavaScript rendering, and retries automatically. Use when the user needs to scrape protected websites, bypass CAPTCHAs, access blocked content, or when regular proxies fail due to anti-bot measures.
What it loads into context
Frontmatter
74 tokensAlways available to the agent
SKILL.md
981 tokensWhen the skill is activated
Reference documents
1,310 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Endpoint
- Authentication
- Quick Start
- Headers
- Session Persistence
- Geo-Location Targeting
- When to Use Web Unblocker vs Regular Proxies
- Key Guidelines
Files
SKILL.mdcore3,458 bytesSKILL.mdcore3,458 bytesSKILL.mdcore3,458 bytesSKILL.mdcore3,458 bytesSKILL.mdcore3,458 bytesSKILL.mdcore3,458 bytesexamples.mddoc4,766 bytes
Read SKILL.md
# Oxylabs Web Unblocker
AI-powered proxy solution that automatically manages fingerprinting, headers, retries, and JavaScript rendering.
## Endpoint
```
https://unblock.oxylabs.io:60000
```
## Authentication
HTTP Basic Auth via proxy credentials:
View the complete source on GitHubSkills included
- agent-browser
- proxies
- video-data
- web-scraper-api
- web-unblocker
Repository facts
- License
- MIT
- Created
- Feb 17, 2026
- Last pushed
- Oct 16, 2026
- Forks
- 2
- Open issues
- 0
- Project activity
- Active
Rank over the last 12 weeks
Now #998 · best #662 · down 264 in 30 days
- #979 on Nov 2
- #984 on Nov 3
- #989 from Nov 4 to Nov 5
- #991 on Nov 6
- #997 on Nov 7
- #998 since Nov 8
41 earlier periods
- #999 on Aug 1
- #835 on Aug 8
- #841 on Aug 9
- #877 on Aug 10
- #875 on Aug 11
- #874 on Aug 12
- #848 on Aug 17
- #867 on Aug 18
- #856 on Aug 19
- #841 on Aug 20
- #840 on Aug 21
- #775 on Aug 22
- #824 on Aug 23
- #808 on Aug 24
- #805 on Aug 25
- #773 on Aug 26
- #761 on Aug 27
- #752 on Aug 28
- #678 on Aug 29
- #662 on Aug 30
- #680 on Aug 31
- #682 on Sep 1
- #677 on Sep 3
- #687 on Sep 7
- #709 on Sep 8
- #689 on Sep 12
- #713 on Sep 14
- #705 on Sep 15
- #717 on Sep 21
- #735 on Sep 22
- #726 on Sep 23
- #732 on Sep 28
- #766 on Sep 29
- #734 on Oct 5
- #798 on Oct 14
- #942 on Oct 25
- #958 on Oct 28
- #962 on Oct 29
- #965 on Oct 30
- #969 on Oct 31
- #972 on Nov 1
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 4, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 23 notes
skills/proxies/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/proxies/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/proxies/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/proxies/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/proxies/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/proxies/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-data/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-data/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-data/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-data/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-data/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-data/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-data/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/video-data/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/web-scraper-api/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/web-scraper-api/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/web-scraper-api/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/web-scraper-api/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/web-unblocker/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/web-unblocker/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- No dangerous shell commands
- 617 network referencesin 18 files: skills/proxies/examples.md:10 skills/proxies/dedicated-datacenter.md:7 skills/video-data/examples.md:9 and 15 more
- No hidden or obfuscated text
- No instruction overrides
- 2 executable scriptsin 2 files: agent-browser/scripts/playwright_scrape.js:1 agent-browser/scripts/playwright_scrape.py:1
- 80 references to secretsin 11 files: skills/video-data/examples.md:58 skills/proxies/examples.md:24 skills/video-data/SKILL.md:145 and 8 more
- No requests to vote in Hot
Show all 699 signals by file
.claude-plugin/marketplace.json
- Network accessline 1
{ "$schema": "https://json.schemastore.org/claude-code-marketplace.json", - Network accessline 2
"$schema": "https://json.schemastore.org/claude-code-marketplace.json", - Network accessline 5
"name": "Oxylabs", "email": "support@oxylabs.io", "url": "https://oxylabs.io" - Network accessline 6
"email": "support@oxylabs.io", "url": "https://oxylabs.io" }, - Network accessline 7
"url": "https://oxylabs.io" - Network accessline 16
"author": { "name": "Oxylabs", "url": "https://oxylabs.io" - Network accessline 17
"name": "Oxylabs", "url": "https://oxylabs.io" }, - Network accessline 18
"url": "https://oxylabs.io"
.claude-plugin/plugin.json
- Network accessline 1
{ "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", - Network accessline 2
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", - Network accessline 8
"name": "Oxylabs", "email": "support@oxylabs.io", "url": "https://oxylabs.io" - Network accessline 9
"email": "support@oxylabs.io", "url": "https://oxylabs.io" }, - Network accessline 10
"url": "https://oxylabs.io" - Network accessline 11
}, "homepage": "https://github.com/oxylabs/agent-skills", "repository": "https://github.com/oxylabs/agent-skills", - Network accessline 12
"homepage": "https://github.com/oxylabs/agent-skills", - Network accessline 13
"repository": "https://github.com/oxylabs/agent-skills",
skills/agent-browser/SKILL.md
- Network accessline 20
| Browser engine | Default engine with the `oxyfp_win` browser profile; `p_src=oxybrowser` selects the new engine (see `parameters.md`) | | Libraries | Playwright `chromium.connectOverCDP` (recommended), Puppeteer `puppeteer.connect`, any C - Network accessline 22
| Dashboard / support | `https://hb.oxylabs.io/dashboard` · `support@oxylabs.io` | - Network accessline 42
try { const page = await browser.contexts()[0].newPage(); // default context: backed by the device configuration, proxy, o_profile await page.goto("https://example.com", { waitUntil: "domcontentloaded", timeout: 30000 }); - Network accessline 43
const page = await browser.contexts()[0].newPage(); // default context: backed by the device configuration, proxy, o_profile await page.goto("https://example.com", { waitUntil: "domcontentloaded", timeout: 30000 }); console.log(await pa - Network accessline 44
await page.goto("https://example.com", { waitUntil: "domcontentloaded", timeout: 30000 }); - Network accessline 200
- **Debugging.** Two tools exist, and whenever the user asks how to debug, what the browser is doing, or why a run fails, tell them about both: **live inspection** (fetch the session id with the CDP command `__session_id`, open `https:/ - Network accessline 201
fails, tell them about both: **live inspection** (fetch the session id with the CDP command `__session_id`, open `https://hb.oxylabs.io/novnc/?id=<id>` and watch the session as it runs) and **recordings** (`record=true& record_name=<job - Network accessline 202
`https://hb.oxylabs.io/novnc/?id=<id>` and watch the session as it runs) and **recordings** (`record=true& - Network accessline 203
record_name=<job>` saves a video of the session to replay later in `https://hb.oxylabs.io/dashboard`; cap 10, - Network accessline 213
Not available by default; access requires a short KYC via your account manager: entertainment and streaming, banking and finance, government sites, gaming platforms, ticketing, webmail, ad networks, third-party IP checkers. Use `https://ip. - Network accessline 214
banking and finance, government sites, gaming platforms, ticketing, webmail, ad networks, third-party IP checkers. Use `https://ip.oxylabs.io/location` to verify your exit IP and geo. A restricted target fails `Page.navigate` with CDP error - Network accessline 215
checkers. Use `https://ip.oxylabs.io/location` to verify your exit IP and geo. A restricted target fails
skills/agent-browser/challenges.md
- Network accessline 208
}); }); await page.goto("https://example.com", { waitUntil: "domcontentloaded", timeout: 30000 }); - Network accessline 209
}); await page.goto("https://example.com", { waitUntil: "domcontentloaded", timeout: 30000 }); const terminal = await page.waitForFunction( - Network accessline 210
await page.goto("https://example.com", { waitUntil: "domcontentloaded", timeout: 30000 }); - Network accessline 221
await context.add_init_script(PAGE_STATUS_INIT_SCRIPT) # from the sync template above page = await context.new_page() await page.goto("https://example.com", wait_until="domcontentloaded", timeout=30_000) - Network accessline 222
page = await context.new_page() await page.goto("https://example.com", wait_until="domcontentloaded", timeout=30_000) handle = await page.wait_for_function(TERMINAL_PAGE_STATUS, timeout=90_000, polling=500) - Network accessline 223
await page.goto("https://example.com", wait_until="domcontentloaded", timeout=30_000) - Network accessline 241
});`, }, cdpSession); await send("Page.navigate", { url: "https://example.com" }, cdpSession); - Network accessline 242
}, cdpSession); await send("Page.navigate", { url: "https://example.com" }, cdpSession); const deadline = Date.now() + 90000; - Network accessline 243
await send("Page.navigate", { url: "https://example.com" }, cdpSession); - Network accessline 326
await setupProfile("https://target.example/"); - Network accessline 327
await scrape("https://target.example/listing/1", identity); // consumers: o_profile without o_profile_save
skills/agent-browser/examples.md
- Network accessline 46
await page.goto("https://example.com", { waitUntil: "domcontentloaded", timeout: 30000 }); - Access to secretsline 60
[Credential-related source omitted] - Access to secretsline 61
[Credential-related source omitted] - Network accessline 91
await page.goto("https://example.com", wait_until="domcontentloaded", timeout=30_000) - Network accessline 134
try { const { value: sessionId } = await send("__session_id"); console.log("session_id:", sessionId, "inspect: https://hb.oxylabs.io/novnc/?id=" + sessionId); - Network accessline 135
const { value: sessionId } = await send("__session_id"); console.log("session_id:", sessionId, "inspect: https://hb.oxylabs.io/novnc/?id=" + sessionId); const { targetId } = await send("Target.createTarget", { url: "about:blank" }); - Network accessline 136
console.log("session_id:", sessionId, "inspect: https://hb.oxylabs.io/novnc/?id=" + sessionId); - Network accessline 138
const { sessionId: cdpSession } = await send("Target.attachToTarget", { targetId, flatten: true }); await send("Page.enable", {}, cdpSession); await send("Page.navigate", { url: "https://example.com" }, cdpSession); - Network accessline 139
await send("Page.enable", {}, cdpSession); await send("Page.navigate", { url: "https://example.com" }, cdpSession); } finally { - Network accessline 140
await send("Page.navigate", { url: "https://example.com" }, cdpSession); - Network accessline 162
const browser = await puppeteer.connect({ browserWSEndpoint: endpointUrl({ session_name: "job-42", p_cc: "US" }) }); const page = await browser.newPage(); await page.goto("https://example.com/"); - Network accessline 163
const page = await browser.newPage(); await page.goto("https://example.com/"); // ... choose region and currency, accept the cookie banner ... - Network accessline 164
await page.goto("https://example.com/"); - Network accessline 174
const ctx = browser.contexts()[0]; const page = ctx.pages().find((p) => p.url().includes("example.com")) ?? (await ctx.newPage()); await page.goto("https://example.com/catalog"); // region and currency choice still applied - Network accessline 175
const page = ctx.pages().find((p) => p.url().includes("example.com")) ?? (await ctx.newPage()); await page.goto("https://example.com/catalog"); // region and currency choice still applied } finally { - Network accessline 176
await page.goto("https://example.com/catalog"); // region and currency choice still applied - Network accessline 215
// Consumer service: any number of runs, never o_profile_save. await setupProfile("https://target.example/"); - Network accessline 216
await setupProfile("https://target.example/"); - Network accessline 217
await scrape("https://target.example/listing/1", identity); - Network accessline 218
await scrape("https://target.example/listing/2", identity); - Network accessline 233
const { value: sessionId } = await cdp.send("__session_id"); console.log(`session_id: ${sessionId}`); console.log(`live view: https://hb.oxylabs.io/novnc/?id=${sessionId}`); - Network accessline 234
console.log(`session_id: ${sessionId}`); console.log(`live view: https://hb.oxylabs.io/novnc/?id=${sessionId}`); await page.goto("https://example.com"); - Network accessline 235
console.log(`live view: https://hb.oxylabs.io/novnc/?id=${sessionId}`); - Network accessline 236
await page.goto("https://example.com"); - Network accessline 237
} finally { await browser.close(); // the recording is finalised and appears in https://hb.oxylabs.io/dashboard } - Network accessline 238
await browser.close(); // the recording is finalised and appears in https://hb.oxylabs.io/dashboard
skills/agent-browser/parameters.md
- Access to secretsline 54
[Credential-related source omitted]
skills/agent-browser/scripts/playwright_scrape.js
skills/agent-browser/scripts/playwright_scrape.py
- Executable scriptline 1
Executable file - Access to secretsline 4
[Credential-related source omitted] - Access to secretsline 5
[Credential-related source omitted] - Network accessline 130
if __name__ == "__main__": print(len(scrape("https://example.com", PARAMS)), "bytes") - Network accessline 131
print(len(scrape("https://example.com", PARAMS)), "bytes")
skills/agent-browser/targets.md
- Access to secretsline 3
[Credential-related source omitted] - Network accessline 125
6. **Slow down**: double the pauses, one identity at a time, `<= 30` pages per identity. 7. **Inspect**: after 3 consecutive failures on the same target, fetch `__session_id` and watch the session at `https://hb.oxylabs.io/novnc/?id=<id> - Network accessline 126
7. **Inspect**: after 3 consecutive failures on the same target, fetch `__session_id` and watch the session at `https://hb.oxylabs.io/novnc/?id=<id>`, or add `record=true&record_name=<job>`; confirm what the page actually shows (block - Network accessline 127
at `https://hb.oxylabs.io/novnc/?id=<id>`, or add `record=true&record_name=<job>`; confirm what the page
skills/proxies/SKILL.md
- Network accessline 55
curl -x "pr.oxylabs.io:7777" \ - Network accessline 55
curl -x "pr.oxylabs.io:7777" \ - Network accessline 57
"https://ip.oxylabs.io/location" - Network accessline 57
"https://ip.oxylabs.io/location" - Network accessline 62
curl -x "dc.oxylabs.io:8000" \ - Network accessline 62
curl -x "dc.oxylabs.io:8000" \ - Network accessline 64
"https://ip.oxylabs.io/location" - Network accessline 64
"https://ip.oxylabs.io/location" - Network accessline 69
curl -x "isp.oxylabs.io:8001" \ - Network accessline 69
curl -x "isp.oxylabs.io:8001" \ - Network accessline 71
"https://ip.oxylabs.io/location" - Network accessline 71
"https://ip.oxylabs.io/location" - Network accessline 79
|---------|----------|-----------|----------| |HTTP| TCP| pr.oxylabs.io:7777| Default. Supported by common libraries and third-party software| |HTTPS| TCP| https://pr.oxylabs.io:7777| Fully encrypted connection to the proxy| - Network accessline 79
|---------|----------|-----------|----------| |HTTP| TCP| pr.oxylabs.io:7777| Default. Supported by common libraries and third-party software| |HTTPS| TCP| https://pr.oxylabs.io:7777| Fully encrypted connection to the proxy| - Network accessline 80
|HTTP| TCP| pr.oxylabs.io:7777| Default. Supported by common libraries and third-party software| |HTTPS| TCP| https://pr.oxylabs.io:7777| Fully encrypted connection to the proxy| |SOCKS5| TCP and UDP| socks5h://pr.oxylabs.io:7777| Client re - Network accessline 80
|HTTP| TCP| pr.oxylabs.io:7777| Default. Supported by common libraries and third-party software| |HTTPS| TCP| https://pr.oxylabs.io:7777| Fully encrypted connection to the proxy| |SOCKS5| TCP and UDP| socks5h://pr.oxylabs.io:7777| Client re - Network accessline 81
|HTTPS| TCP| https://pr.oxylabs.io:7777| Fully encrypted connection to the proxy| - Network accessline 81
|HTTPS| TCP| https://pr.oxylabs.io:7777| Fully encrypted connection to the proxy| - Network accessline 106
curl -x "pr.oxylabs.io:7777" \ - Network accessline 106
curl -x "pr.oxylabs.io:7777" \ - Network accessline 108
"https://ip.oxylabs.io/location" - Network accessline 108
"https://ip.oxylabs.io/location" - Network accessline 123
curl -x "pr.oxylabs.io:7777" \ - Network accessline 123
curl -x "pr.oxylabs.io:7777" \ - Network accessline 125
"https://example.com" - Network accessline 125
"https://example.com" - Network accessline 130
curl -x "pr.oxylabs.io:7777" \ - Network accessline 130
curl -x "pr.oxylabs.io:7777" \ - Network accessline 132
"https://example.com" - Network accessline 132
"https://example.com"
skills/proxies/dedicated-datacenter.md
- Network accessline 7
Purchased via [dashboard](https://dashboard.oxylabs.io/en/). Proxy list: **My Products → Dedicated Datacenter Proxies → Proxy list** (export JSON/CSV). - Network accessline 7
Purchased via [dashboard](https://dashboard.oxylabs.io/en/). Proxy list: **My Products → Dedicated Datacenter Proxies → Proxy list** (export JSON/CSV). - Network accessline 21
curl -x ddc.oxylabs.io:8001 -U "user-USERNAME:PASSWORD" https://ip.oxylabs.io/location - Network accessline 21
curl -x ddc.oxylabs.io:8001 -U "user-USERNAME:PASSWORD" https://ip.oxylabs.io/location - Network accessline 29
curl -x ddc.oxylabs.io:8000 -U "user-USERNAME:PASSWORD" https://ip.oxylabs.io/location - Network accessline 29
curl -x ddc.oxylabs.io:8000 -U "user-USERNAME:PASSWORD" https://ip.oxylabs.io/location - Network accessline 37
curl -x ddc.oxylabs.io:8000 -U "user-USERNAME-country-US:PASSWORD" https://ip.oxylabs.io/location - Network accessline 37
curl -x ddc.oxylabs.io:8000 -U "user-USERNAME-country-US:PASSWORD" https://ip.oxylabs.io/location - Network accessline 46
| Protocol | Example | |----------|---------| | HTTP | `http://ddc.oxylabs.io:8001` | - Network accessline 46
| Protocol | Example | |----------|---------| | HTTP | `http://ddc.oxylabs.io:8001` | - Network accessline 47
|----------|---------| | HTTP | `http://ddc.oxylabs.io:8001` | | HTTPS | `https://ddc.oxylabs.io:8001` | - Network accessline 47
|----------|---------| | HTTP | `http://ddc.oxylabs.io:8001` | | HTTPS | `https://ddc.oxylabs.io:8001` | - Network accessline 48
| HTTP | `http://ddc.oxylabs.io:8001` | - Network accessline 48
| HTTP | `http://ddc.oxylabs.io:8001` | - Network accessline 49
| HTTPS | `https://ddc.oxylabs.io:8001` | - Network accessline 49
| HTTPS | `https://ddc.oxylabs.io:8001` | - Access to secretsline 59
[Credential-related source omitted] - Access to secretsline 59
[Credential-related source omitted] - Access to secretsline 60
[Credential-related source omitted] - Access to secretsline 60
[Credential-related source omitted] - Network accessline 63
proxies = { "http": f"http://user-{user}:{pwd}@ddc.oxylabs.io:{port}", - Network accessline 63
proxies = { "http": f"http://user-{user}:{pwd}@ddc.oxylabs.io:{port}", - Network accessline 64
"http": f"http://user-{user}:{pwd}@ddc.oxylabs.io:{port}", - Network accessline 64
"http": f"http://user-{user}:{pwd}@ddc.oxylabs.io:{port}", - Network accessline 65
"https": f"http://user-{user}:{pwd}@ddc.oxylabs.io:{port}", } resp = requests.get("https://ip.oxylabs.io/location", proxies=proxies) - Network accessline 65
"https": f"http://user-{user}:{pwd}@ddc.oxylabs.io:{port}", } resp = requests.get("https://ip.oxylabs.io/location", proxies=proxies) - Network accessline 67
resp = requests.get("https://ip.oxylabs.io/location", proxies=proxies) - Network accessline 67
resp = requests.get("https://ip.oxylabs.io/location", proxies=proxies) - Network accessline 96
# Username/password curl -x 1.2.3.4:60000 -U "USERNAME:PASSWORD" https://ip.oxylabs.io/location - Network accessline 96
# Username/password curl -x 1.2.3.4:60000 -U "USERNAME:PASSWORD" https://ip.oxylabs.io/location - Network accessline 97
curl -x 1.2.3.4:60000 -U "USERNAME:PASSWORD" https://ip.oxylabs.io/location - Network accessline 97
curl -x 1.2.3.4:60000 -U "USERNAME:PASSWORD" https://ip.oxylabs.io/location - Network accessline 99
# Whitelisted IP curl -x 1.2.3.4:65432 https://ip.oxylabs.io/location - Network accessline 99
# Whitelisted IP curl -x 1.2.3.4:65432 https://ip.oxylabs.io/location - Network accessline 100
curl -x 1.2.3.4:65432 https://ip.oxylabs.io/location - Network accessline 100
curl -x 1.2.3.4:65432 https://ip.oxylabs.io/location - Network accessline 106
# Browser or API — HTTP Basic Auth curl -u "USERNAME:PASSWORD" https://proxy.oxylabs.io/all - Network accessline 106
# Browser or API — HTTP Basic Auth curl -u "USERNAME:PASSWORD" https://proxy.oxylabs.io/all - Network accessline 107
curl -u "USERNAME:PASSWORD" https://proxy.oxylabs.io/all - Network accessline 107
curl -u "USERNAME:PASSWORD" https://proxy.oxylabs.io/all - Network accessline 109
# With location metadata curl -u "USERNAME:PASSWORD" "https://proxy.oxylabs.io/all?showCountry" - Network accessline 109
# With location metadata curl -u "USERNAME:PASSWORD" "https://proxy.oxylabs.io/all?showCountry" - Network accessline 110
curl -u "USERNAME:PASSWORD" "https://proxy.oxylabs.io/all?showCountry" - Network accessline 110
curl -u "USERNAME:PASSWORD" "https://proxy.oxylabs.io/all?showCountry" - Network accessline 111
curl -u "USERNAME:PASSWORD" "https://proxy.oxylabs.io/all?showCity" - Network accessline 111
curl -u "USERNAME:PASSWORD" "https://proxy.oxylabs.io/all?showCity" - Network accessline 116
| Endpoint | Purpose | |----------|---------| | `GET https://api.oxylabs.io/v1/proxies/lists` | List all proxy lists | - Network accessline 116
| Endpoint | Purpose | |----------|---------| | `GET https://api.oxylabs.io/v1/proxies/lists` | List all proxy lists | - Network accessline 117
|----------|---------| | `GET https://api.oxylabs.io/v1/proxies/lists` | List all proxy lists | | `GET https://api.oxylabs.io/v1/proxies/lists/{uuid}` | Get specific list (IP, port, country, city) | - Network accessline 117
|----------|---------| | `GET https://api.oxylabs.io/v1/proxies/lists` | List all proxy lists | | `GET https://api.oxylabs.io/v1/proxies/lists/{uuid}` | Get specific list (IP, port, country, city) | - Network accessline 118
| `GET https://api.oxylabs.io/v1/proxies/lists` | List all proxy lists | - Network accessline 118
| `GET https://api.oxylabs.io/v1/proxies/lists` | List all proxy lists | - Network accessline 119
| `GET https://api.oxylabs.io/v1/proxies/lists/{uuid}` | Get specific list (IP, port, country, city) | - Network accessline 119
| `GET https://api.oxylabs.io/v1/proxies/lists/{uuid}` | Get specific list (IP, port, country, city) | - Network accessline 126
curl -x vm.oxylabs.io:60000 -U "USERNAME:PASSWORD" https://ip.oxylabs.io/location - Network accessline 126
curl -x vm.oxylabs.io:60000 -U "USERNAME:PASSWORD" https://ip.oxylabs.io/location - Network accessline 132
curl -x vm.oxylabs.io:60000 -U "USER:PASS" https://ip.oxylabs.io/location \ - Network accessline 132
curl -x vm.oxylabs.io:60000 -U "USER:PASS" https://ip.oxylabs.io/location \ - Network accessline 147
s = requests.Session() - Network accessline 147
s = requests.Session() - Network accessline 148
s.proxies = {"https": "http://USER:PASS@vm.oxylabs.io:60000"} - Network accessline 148
s.proxies = {"https": "http://USER:PASS@vm.oxylabs.io:60000"} - Network accessline 150
s.get("https://ip.oxylabs.io/location") - Network accessline 150
s.get("https://ip.oxylabs.io/location") - Network accessline 155
| Method | Endpoint | Notes | |--------|----------|-------| | `GET` | `https://api.oxylabs.io/v1/whitelisted_ips` | List IPs + ids (`200`) | - Network accessline 155
| Method | Endpoint | Notes | |--------|----------|-------| | `GET` | `https://api.oxylabs.io/v1/whitelisted_ips` | List IPs + ids (`200`) | - Network accessline 156
|--------|----------|-------| | `GET` | `https://api.oxylabs.io/v1/whitelisted_ips` | List IPs + ids (`200`) | | `POST` | `https://api.oxylabs.io/v1/whitelisted_ips` | Add one — body `{"address": "x.x.x.x"}` (`201`, `422` invalid) | - Network accessline 156
|--------|----------|-------| | `GET` | `https://api.oxylabs.io/v1/whitelisted_ips` | List IPs + ids (`200`) | | `POST` | `https://api.oxylabs.io/v1/whitelisted_ips` | Add one — body `{"address": "x.x.x.x"}` (`201`, `422` invalid) | - Network accessline 157
| `GET` | `https://api.oxylabs.io/v1/whitelisted_ips` | List IPs + ids (`200`) | - Network accessline 157
| `GET` | `https://api.oxylabs.io/v1/whitelisted_ips` | List IPs + ids (`200`) | - Network accessline 158
| `POST` | `https://api.oxylabs.io/v1/whitelisted_ips` | Add one — body `{"address": "x.x.x.x"}` (`201`, `422` invalid) | - Network accessline 158
| `POST` | `https://api.oxylabs.io/v1/whitelisted_ips` | Add one — body `{"address": "x.x.x.x"}` (`201`, `422` invalid) | - Network accessline 159
| `DELETE` | `https://api.oxylabs.io/v1/whitelisted_ips/{id}` | Remove by id (`204`) | - Network accessline 159
| `DELETE` | `https://api.oxylabs.io/v1/whitelisted_ips/{id}` | Remove by id (`204`) | - Network accessline 160
| `POST` | `https://api.oxylabs.io/v1/whitelisted_ips/upload_to_servers` | Apply changes to servers (`202`; 5-min cooldown → `429`) | - Network accessline 160
| `POST` | `https://api.oxylabs.io/v1/whitelisted_ips/upload_to_servers` | Apply changes to servers (`202`; 5-min cooldown → `429`) | - Network accessline 166
OpenAPI spec: https://dc-api-spec.oxylabs.io/ — add/replace subnets, check offline IPs via Subnets endpoint. - Network accessline 166
OpenAPI spec: https://dc-api-spec.oxylabs.io/ — add/replace subnets, check offline IPs via Subnets endpoint.
skills/proxies/dedicated-isp.md
- Network accessline 9
Purchased via [dashboard](https://dashboard.oxylabs.io/en/) — select locations and premium ASNs at checkout. Proxy list: **My Products → Dedicated ISP Proxies → Proxy list** (export JSON/CSV). - Network accessline 9
Purchased via [dashboard](https://dashboard.oxylabs.io/en/) — select locations and premium ASNs at checkout. Proxy list: **My Products → Dedicated ISP Proxies → Proxy list** (export JSON/CSV). - Network accessline 25
curl -x disp.oxylabs.io:8001 -U "user-USERNAME:PASSWORD" https://ip.oxylabs.io/location - Network accessline 25
curl -x disp.oxylabs.io:8001 -U "user-USERNAME:PASSWORD" https://ip.oxylabs.io/location - Network accessline 33
curl -x disp.oxylabs.io:8000 -U "user-USERNAME:PASSWORD" https://ip.oxylabs.io/location - Network accessline 33
curl -x disp.oxylabs.io:8000 -U "user-USERNAME:PASSWORD" https://ip.oxylabs.io/location - Network accessline 41
curl -x disp.oxylabs.io:8000 -U "user-USERNAME-country-US:PASSWORD" https://ip.oxylabs.io/location - Network accessline 41
curl -x disp.oxylabs.io:8000 -U "user-USERNAME-country-US:PASSWORD" https://ip.oxylabs.io/location - Network accessline 50
GeoIP databases may show original IP owner, not current ISP. For accurate ASN data, check [RIPEstat](https://stat.ripe.net/). - Network accessline 50
GeoIP databases may show original IP owner, not current ISP. For accurate ASN data, check [RIPEstat](https://stat.ripe.net/). - Network accessline 54
| Protocol | Example | |----------|---------| | HTTP | `http://disp.oxylabs.io:8001` | - Network accessline 54
| Protocol | Example | |----------|---------| | HTTP | `http://disp.oxylabs.io:8001` | - Network accessline 55
|----------|---------| | HTTP | `http://disp.oxylabs.io:8001` | | HTTPS | `https://disp.oxylabs.io:8001` | - Network accessline 55
|----------|---------| | HTTP | `http://disp.oxylabs.io:8001` | | HTTPS | `https://disp.oxylabs.io:8001` | - Network accessline 56
| HTTP | `http://disp.oxylabs.io:8001` | - Network accessline 56
| HTTP | `http://disp.oxylabs.io:8001` | - Network accessline 57
| HTTPS | `https://disp.oxylabs.io:8001` | - Network accessline 57
| HTTPS | `https://disp.oxylabs.io:8001` | - Access to secretsline 67
[Credential-related source omitted] - Access to secretsline 67
[Credential-related source omitted] - Access to secretsline 68
[Credential-related source omitted] - Access to secretsline 68
[Credential-related source omitted] - Network accessline 71
proxies = { "http": f"http://user-{user}:{pwd}@disp.oxylabs.io:{port}", - Network accessline 71
proxies = { "http": f"http://user-{user}:{pwd}@disp.oxylabs.io:{port}", - Network accessline 72
"http": f"http://user-{user}:{pwd}@disp.oxylabs.io:{port}", - Network accessline 72
"http": f"http://user-{user}:{pwd}@disp.oxylabs.io:{port}", - Network accessline 73
"https": f"http://user-{user}:{pwd}@disp.oxylabs.io:{port}", } resp = requests.get("https://ip.oxylabs.io/location", proxies=proxies) - Network accessline 73
"https": f"http://user-{user}:{pwd}@disp.oxylabs.io:{port}", } resp = requests.get("https://ip.oxylabs.io/location", proxies=proxies) - Network accessline 75
resp = requests.get("https://ip.oxylabs.io/location", proxies=proxies) - Network accessline 75
resp = requests.get("https://ip.oxylabs.io/location", proxies=proxies) - Network accessline 104
curl -x 1.2.3.4:60000 -U "USERNAME:PASSWORD" https://ip.oxylabs.io/location - Network accessline 104
curl -x 1.2.3.4:60000 -U "USERNAME:PASSWORD" https://ip.oxylabs.io/location - Network accessline 105
curl -x 1.2.3.4:65432 https://ip.oxylabs.io/location # whitelisted - Network accessline 105
curl -x 1.2.3.4:65432 https://ip.oxylabs.io/location # whitelisted - Network accessline 111
curl -u "USERNAME:PASSWORD" https://proxy.oxylabs.io/all - Network accessline 111
curl -u "USERNAME:PASSWORD" https://proxy.oxylabs.io/all - Network accessline 116
| Endpoint | Purpose | |----------|---------| | `GET https://api.oxylabs.io/v1/proxies/lists` | List all proxy lists | - Network accessline 116
| Endpoint | Purpose | |----------|---------| | `GET https://api.oxylabs.io/v1/proxies/lists` | List all proxy lists | - Network accessline 117
|----------|---------| | `GET https://api.oxylabs.io/v1/proxies/lists` | List all proxy lists | | `GET https://api.oxylabs.io/v1/proxies/lists/{uuid}` | Get specific list | - Network accessline 117
|----------|---------| | `GET https://api.oxylabs.io/v1/proxies/lists` | List all proxy lists | | `GET https://api.oxylabs.io/v1/proxies/lists/{uuid}` | Get specific list | - Network accessline 118
| `GET https://api.oxylabs.io/v1/proxies/lists` | List all proxy lists | - Network accessline 118
| `GET https://api.oxylabs.io/v1/proxies/lists` | List all proxy lists | - Network accessline 119
| `GET https://api.oxylabs.io/v1/proxies/lists/{uuid}` | Get specific list | - Network accessline 119
| `GET https://api.oxylabs.io/v1/proxies/lists/{uuid}` | Get specific list | - Network accessline 126
curl -x vm.oxylabs.io:60000 -U "USERNAME:PASSWORD" https://ip.oxylabs.io/location - Network accessline 126
curl -x vm.oxylabs.io:60000 -U "USERNAME:PASSWORD" https://ip.oxylabs.io/location - Network accessline 132
curl -x vm.oxylabs.io:60000 -U "USER:PASS" https://ip.oxylabs.io/location \ - Network accessline 132
curl -x vm.oxylabs.io:60000 -U "USER:PASS" https://ip.oxylabs.io/location \ - Network accessline 138
| Method | Endpoint | Notes | |--------|----------|-------| | `GET` | `https://api.oxylabs.io/v1/whitelisted_ips` | List IPs + ids (`200`) | - Network accessline 138
| Method | Endpoint | Notes | |--------|----------|-------| | `GET` | `https://api.oxylabs.io/v1/whitelisted_ips` | List IPs + ids (`200`) | - Network accessline 139
|--------|----------|-------| | `GET` | `https://api.oxylabs.io/v1/whitelisted_ips` | List IPs + ids (`200`) | | `POST` | `https://api.oxylabs.io/v1/whitelisted_ips` | Add one — body `{"address": "x.x.x.x"}` (`201`, `422` invalid) | - Network accessline 139
|--------|----------|-------| | `GET` | `https://api.oxylabs.io/v1/whitelisted_ips` | List IPs + ids (`200`) | | `POST` | `https://api.oxylabs.io/v1/whitelisted_ips` | Add one — body `{"address": "x.x.x.x"}` (`201`, `422` invalid) | - Network accessline 140
| `GET` | `https://api.oxylabs.io/v1/whitelisted_ips` | List IPs + ids (`200`) | - Network accessline 140
| `GET` | `https://api.oxylabs.io/v1/whitelisted_ips` | List IPs + ids (`200`) | - Network accessline 141
| `POST` | `https://api.oxylabs.io/v1/whitelisted_ips` | Add one — body `{"address": "x.x.x.x"}` (`201`, `422` invalid) | - Network accessline 141
| `POST` | `https://api.oxylabs.io/v1/whitelisted_ips` | Add one — body `{"address": "x.x.x.x"}` (`201`, `422` invalid) | - Network accessline 142
| `DELETE` | `https://api.oxylabs.io/v1/whitelisted_ips/{id}` | Remove by id (`204`) | - Network accessline 142
| `DELETE` | `https://api.oxylabs.io/v1/whitelisted_ips/{id}` | Remove by id (`204`) | - Network accessline 143
| `POST` | `https://api.oxylabs.io/v1/whitelisted_ips/upload_to_servers` | Apply changes to servers (`202`; 5-min cooldown → `429`) | - Network accessline 143
| `POST` | `https://api.oxylabs.io/v1/whitelisted_ips/upload_to_servers` | Apply changes to servers (`202`; 5-min cooldown → `429`) | - Network accessline 149
OpenAPI spec: https://dc-api-spec.oxylabs.io/ — add/replace subnets, check offline IPs. - Network accessline 149
OpenAPI spec: https://dc-api-spec.oxylabs.io/ — add/replace subnets, check offline IPs.
skills/proxies/examples.md
- Network accessline 10
curl -x ddc.oxylabs.io:8001 -U "user-$OXY_DC_USERNAME:$OXY_DC_PASSWORD" \ - Network accessline 10
curl -x ddc.oxylabs.io:8001 -U "user-$OXY_DC_USERNAME:$OXY_DC_PASSWORD" \ - Network accessline 11
https://ip.oxylabs.io/location - Network accessline 11
https://ip.oxylabs.io/location - Network accessline 16
curl -x ddc.oxylabs.io:8000 \ - Network accessline 16
curl -x ddc.oxylabs.io:8000 \ - Network accessline 18
https://ip.oxylabs.io/location - Network accessline 18
https://ip.oxylabs.io/location - Access to secretsline 24
[Credential-related source omitted] - Access to secretsline 24
[Credential-related source omitted] - Network accessline 27
proxies = { "http": f"http://user-{user}:{pwd}@ddc.oxylabs.io:{port}", - Network accessline 27
proxies = { "http": f"http://user-{user}:{pwd}@ddc.oxylabs.io:{port}", - Network accessline 28
"http": f"http://user-{user}:{pwd}@ddc.oxylabs.io:{port}", - Network accessline 28
"http": f"http://user-{user}:{pwd}@ddc.oxylabs.io:{port}", - Network accessline 29
"https": f"http://user-{user}:{pwd}@ddc.oxylabs.io:{port}", } print(requests.get("https://ip.oxylabs.io/location", proxies=proxies).json()) - Network accessline 29
"https": f"http://user-{user}:{pwd}@ddc.oxylabs.io:{port}", } print(requests.get("https://ip.oxylabs.io/location", proxies=proxies).json()) - Network accessline 31
print(requests.get("https://ip.oxylabs.io/location", proxies=proxies).json()) - Network accessline 31
print(requests.get("https://ip.oxylabs.io/location", proxies=proxies).json()) - Network accessline 38
curl -x disp.oxylabs.io:8001 -U "user-$OXY_DC_USERNAME:$OXY_DC_PASSWORD" \ - Network accessline 38
curl -x disp.oxylabs.io:8001 -U "user-$OXY_DC_USERNAME:$OXY_DC_PASSWORD" \ - Network accessline 39
https://ip.oxylabs.io/location - Network accessline 39
https://ip.oxylabs.io/location - Network accessline 44
curl -x disp.oxylabs.io:8000 -U "user-$OXY_DC_USERNAME:$OXY_DC_PASSWORD" \ - Network accessline 44
curl -x disp.oxylabs.io:8000 -U "user-$OXY_DC_USERNAME:$OXY_DC_PASSWORD" \ - Network accessline 45
https://ip.oxylabs.io/location - Network accessline 45
https://ip.oxylabs.io/location - Network accessline 51
[Credential-related source omitted] - Network accessline 51
[Credential-related source omitted] - Access to secretsline 51
[Credential-related source omitted] - Access to secretsline 51
[Credential-related source omitted] - Network accessline 52
proxies = { "http": f"http://user-{user}:{pwd}@disp.oxylabs.io:8001", "https": f"http://user-{user}:{pwd}@disp.oxylabs.io:8001", - Network accessline 52
proxies = { "http": f"http://user-{user}:{pwd}@disp.oxylabs.io:8001", "https": f"http://user-{user}:{pwd}@disp.oxylabs.io:8001", - Network accessline 53
"http": f"http://user-{user}:{pwd}@disp.oxylabs.io:8001", - Network accessline 53
"http": f"http://user-{user}:{pwd}@disp.oxylabs.io:8001", - Network accessline 54
"https": f"http://user-{user}:{pwd}@disp.oxylabs.io:8001", } print(requests.get("https://ip.oxylabs.io/location", proxies=proxies).json()) - Network accessline 54
"https": f"http://user-{user}:{pwd}@disp.oxylabs.io:8001", } print(requests.get("https://ip.oxylabs.io/location", proxies=proxies).json()) - Network accessline 56
print(requests.get("https://ip.oxylabs.io/location", proxies=proxies).json()) - Network accessline 56
print(requests.get("https://ip.oxylabs.io/location", proxies=proxies).json()) - Network accessline 62
# Username/password on port 60000 curl -x 1.2.3.4:60000 -U "$OXY_DC_USERNAME:$OXY_DC_PASSWORD" \ - Network accessline 62
# Username/password on port 60000 curl -x 1.2.3.4:60000 -U "$OXY_DC_USERNAME:$OXY_DC_PASSWORD" \ - Network accessline 63
curl -x 1.2.3.4:60000 -U "$OXY_DC_USERNAME:$OXY_DC_PASSWORD" \ - Network accessline 63
curl -x 1.2.3.4:60000 -U "$OXY_DC_USERNAME:$OXY_DC_PASSWORD" \ - Network accessline 64
https://ip.oxylabs.io/location - Network accessline 64
https://ip.oxylabs.io/location - Network accessline 66
# Whitelisted IP on port 65432 (no credentials) curl -x 1.2.3.4:65432 https://ip.oxylabs.io/location - Network accessline 66
# Whitelisted IP on port 65432 (no credentials) curl -x 1.2.3.4:65432 https://ip.oxylabs.io/location - Network accessline 67
curl -x 1.2.3.4:65432 https://ip.oxylabs.io/location - Network accessline 67
curl -x 1.2.3.4:65432 https://ip.oxylabs.io/location - Access to secretsline 74
[Credential-related source omitted] - Access to secretsline 74
[Credential-related source omitted] - Access to secretsline 75
[Credential-related source omitted] - Access to secretsline 75
[Credential-related source omitted] - Network accessline 83
s = requests.Session() - Network accessline 83
s = requests.Session() - Network accessline 84
s.proxies = {"https": f"http://{user}:{pwd}@vm.oxylabs.io:60000"} - Network accessline 84
s.proxies = {"https": f"http://{user}:{pwd}@vm.oxylabs.io:60000"} - Network accessline 86
print(s.get("https://ip.oxylabs.io/location").text) - Network accessline 86
print(s.get("https://ip.oxylabs.io/location").text) - Network accessline 93
curl -x "pr.oxylabs.io:7777" \ - Network accessline 93
curl -x "pr.oxylabs.io:7777" \ - Network accessline 95
"https://ip.oxylabs.io/location" - Network accessline 95
"https://ip.oxylabs.io/location" - Network accessline 100
curl -x "pr.oxylabs.io:7777" \ - Network accessline 100
curl -x "pr.oxylabs.io:7777" \ - Network accessline 102
"https://ip.oxylabs.io/location" - Network accessline 102
"https://ip.oxylabs.io/location" - Network accessline 107
curl -x "pr.oxylabs.io:7777" \ - Network accessline 107
curl -x "pr.oxylabs.io:7777" \ - Network accessline 109
"https://example.com" - Network accessline 109
"https://example.com" - Network accessline 114
curl -x "dc.oxylabs.io:8000" \ - Network accessline 114
curl -x "dc.oxylabs.io:8000" \ - Network accessline 116
"https://ip.oxylabs.io/location" - Network accessline 116
"https://ip.oxylabs.io/location" - Network accessline 121
curl -x "isp.oxylabs.io:8001" \ - Network accessline 121
curl -x "isp.oxylabs.io:8001" \ - Network accessline 123
"https://ip.oxylabs.io/location" - Network accessline 123
"https://ip.oxylabs.io/location" - Access to secretsline 133
[Credential-related source omitted] - Access to secretsline 133
[Credential-related source omitted] - Access to secretsline 134
[Credential-related source omitted] - Access to secretsline 134
[Credential-related source omitted] - Network accessline 136
proxies = { "http": f"http://customer-{username}:{password}@pr.oxylabs.io:7777", - Network accessline 136
proxies = { "http": f"http://customer-{username}:{password}@pr.oxylabs.io:7777", - Network accessline 137
"http": f"http://customer-{username}:{password}@pr.oxylabs.io:7777", - Network accessline 137
"http": f"http://customer-{username}:{password}@pr.oxylabs.io:7777", - Network accessline 138
"https": f"http://customer-{username}:{password}@pr.oxylabs.io:7777", - Network accessline 138
"https": f"http://customer-{username}:{password}@pr.oxylabs.io:7777", - Network accessline 141
response = requests.get("https://ip.oxylabs.io/location", proxies=proxies) - Network accessline 141
response = requests.get("https://ip.oxylabs.io/location", proxies=proxies) - Access to secretsline 150
[Credential-related source omitted] - Access to secretsline 150
[Credential-related source omitted] - Access to secretsline 151
[Credential-related source omitted] - Access to secretsline 151
[Credential-related source omitted] - Network accessline 156
proxies = { "http": f"http://{proxy_user}:{password}@pr.oxylabs.io:7777", - Network accessline 156
proxies = { "http": f"http://{proxy_user}:{password}@pr.oxylabs.io:7777", - Network accessline 157
"http": f"http://{proxy_user}:{password}@pr.oxylabs.io:7777", - Network accessline 157
"http": f"http://{proxy_user}:{password}@pr.oxylabs.io:7777", - Network accessline 158
"https": f"http://{proxy_user}:{password}@pr.oxylabs.io:7777" - Network accessline 158
"https": f"http://{proxy_user}:{password}@pr.oxylabs.io:7777" - Network accessline 161
response = requests.get("https://example.com", proxies=proxies) - Network accessline 161
response = requests.get("https://example.com", proxies=proxies) - Access to secretsline 170
[Credential-related source omitted] - Access to secretsline 170
[Credential-related source omitted] - Access to secretsline 171
[Credential-related source omitted] - Access to secretsline 171
[Credential-related source omitted] - Network accessline 173
proxies = { "http": f"http://user-{username}:{password}@dc.oxylabs.io:8000", - Network accessline 173
proxies = { "http": f"http://user-{username}:{password}@dc.oxylabs.io:8000", - Network accessline 174
"http": f"http://user-{username}:{password}@dc.oxylabs.io:8000", - Network accessline 174
"http": f"http://user-{username}:{password}@dc.oxylabs.io:8000", - Network accessline 175
"https": f"http://user-{username}:{password}@dc.oxylabs.io:8000" - Network accessline 175
"https": f"http://user-{username}:{password}@dc.oxylabs.io:8000" - Network accessline 178
response = requests.get("https://ip.oxylabs.io/location", proxies=proxies) - Network accessline 178
response = requests.get("https://ip.oxylabs.io/location", proxies=proxies) - Network accessline 200
axios.get("https://ip.oxylabs.io/location", { proxy }) - Network accessline 200
axios.get("https://ip.oxylabs.io/location", { proxy }) - Network accessline 221
axios.get("https://example.com", { proxy }) - Network accessline 221
axios.get("https://example.com", { proxy }) - Network accessline 233
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://ip.oxylabs.io/location"); - Network accessline 233
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://ip.oxylabs.io/location"); - Network accessline 234
curl_setopt($ch, CURLOPT_URL, "https://ip.oxylabs.io/location"); - Network accessline 234
curl_setopt($ch, CURLOPT_URL, "https://ip.oxylabs.io/location"); - Network accessline 235
curl_setopt($ch, CURLOPT_PROXY, "http://pr.oxylabs.io:7777"); - Network accessline 235
curl_setopt($ch, CURLOPT_PROXY, "http://pr.oxylabs.io:7777"); - Network accessline 254
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://example.com"); - Network accessline 254
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://example.com"); - Network accessline 255
curl_setopt($ch, CURLOPT_URL, "https://example.com"); - Network accessline 255
curl_setopt($ch, CURLOPT_URL, "https://example.com"); - Network accessline 256
curl_setopt($ch, CURLOPT_PROXY, "http://pr.oxylabs.io:7777"); - Network accessline 256
curl_setopt($ch, CURLOPT_PROXY, "http://pr.oxylabs.io:7777"); - Network accessline 284
proxyURL, _ := url.Parse(fmt.Sprintf( "http://customer-%s:%s@pr.oxylabs.io:7777", - Network accessline 284
proxyURL, _ := url.Parse(fmt.Sprintf( "http://customer-%s:%s@pr.oxylabs.io:7777", - Network accessline 285
"http://customer-%s:%s@pr.oxylabs.io:7777", - Network accessline 285
"http://customer-%s:%s@pr.oxylabs.io:7777", - Network accessline 289
client := &http.Client{ - Network accessline 289
client := &http.Client{ - Network accessline 293
resp, _ := client.Get("https://ip.oxylabs.io/location") - Network accessline 293
resp, _ := client.Get("https://ip.oxylabs.io/location") - Network accessline 324
URL url = new URL("https://ip.oxylabs.io/location"); - Network accessline 324
URL url = new URL("https://ip.oxylabs.io/location"); - Network accessline 351
uri = URI.parse('https://ip.oxylabs.io/location') - Network accessline 351
uri = URI.parse('https://ip.oxylabs.io/location')
skills/video-data/SKILL.md
- Network accessline 27
POST https://realtime.oxylabs.io/v1/queries # immediate metadata/search/subtitle responses - Network accessline 27
POST https://realtime.oxylabs.io/v1/queries # immediate metadata/search/subtitle responses - Network accessline 28
POST https://data.oxylabs.io/v1/queries # Push-Pull downloads, callbacks, storage - Network accessline 28
POST https://data.oxylabs.io/v1/queries # Push-Pull downloads, callbacks, storage - Network accessline 35
curl -u "$OXY_WSA_USERNAME:$OXY_WSA_PASSWORD" ... - Network accessline 35
curl -u "$OXY_WSA_USERNAME:$OXY_WSA_PASSWORD" ... - Network accessline 71
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 71
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 83
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 83
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 94
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 94
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 124
curl -x "http://USERNAME-test:PASSWORD@YOUR_ENDPOINT:60000" \ - Network accessline 124
curl -x "http://USERNAME-test:PASSWORD@YOUR_ENDPOINT:60000" \ - Network accessline 125
"https://ip.oxylabs.io/location" - Network accessline 125
"https://ip.oxylabs.io/location" - Network accessline 132
yt-dlp --proxy "http://USERNAME-Random1Session2ID:PASSWORD@YOUR_ENDPOINT:60000" \ - Network accessline 132
yt-dlp --proxy "http://USERNAME-Random1Session2ID:PASSWORD@YOUR_ENDPOINT:60000" \ - Network accessline 133
"https://www.youtube.com/watch?v=VIDEO_ID" - Network accessline 133
"https://www.youtube.com/watch?v=VIDEO_ID" - Access to secretsline 145
[Credential-related source omitted] - Access to secretsline 145
[Credential-related source omitted] - Access to secretsline 146
[Credential-related source omitted] - Access to secretsline 146
[Credential-related source omitted] - Access to secretsline 147
[Credential-related source omitted] - Access to secretsline 147
[Credential-related source omitted] - Network accessline 152
ydl_opts = { "proxy": f"http://{username}-{session_id}:{password}@{endpoint}:60000", - Network accessline 152
ydl_opts = { "proxy": f"http://{username}-{session_id}:{password}@{endpoint}:60000", - Network accessline 153
"proxy": f"http://{username}-{session_id}:{password}@{endpoint}:60000", - Network accessline 153
"proxy": f"http://{username}-{session_id}:{password}@{endpoint}:60000", - Network accessline 158
with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download(["https://www.youtube.com/watch?v=VIDEO_ID"]) - Network accessline 158
with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download(["https://www.youtube.com/watch?v=VIDEO_ID"]) - Network accessline 159
ydl.download(["https://www.youtube.com/watch?v=VIDEO_ID"]) - Network accessline 159
ydl.download(["https://www.youtube.com/watch?v=VIDEO_ID"])
skills/video-data/examples.md
- Network accessline 9
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 9
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 20
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 20
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 31
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 31
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 42
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 42
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Access to secretsline 58
[Credential-related source omitted] - Access to secretsline 58
[Credential-related source omitted] - Access to secretsline 59
[Credential-related source omitted] - Access to secretsline 59
[Credential-related source omitted] - Network accessline 61
response = requests.post( - Network accessline 61
response = requests.post( - Network accessline 62
"https://realtime.oxylabs.io/v1/queries", - Network accessline 62
"https://realtime.oxylabs.io/v1/queries", - Access to secretsline 82
[Credential-related source omitted] - Access to secretsline 82
[Credential-related source omitted] - Access to secretsline 83
[Credential-related source omitted] - Access to secretsline 83
[Credential-related source omitted] - Network accessline 85
response = requests.post( - Network accessline 85
response = requests.post( - Network accessline 86
"https://realtime.oxylabs.io/v1/queries", - Network accessline 86
"https://realtime.oxylabs.io/v1/queries", - Network accessline 112
async function getVideoMetadata(videoId) { const response = await axios.post( "https://realtime.oxylabs.io/v1/queries", - Network accessline 112
async function getVideoMetadata(videoId) { const response = await axios.post( "https://realtime.oxylabs.io/v1/queries", - Network accessline 113
const response = await axios.post( "https://realtime.oxylabs.io/v1/queries", { - Network accessline 113
const response = await axios.post( "https://realtime.oxylabs.io/v1/queries", { - Network accessline 114
"https://realtime.oxylabs.io/v1/queries", - Network accessline 114
"https://realtime.oxylabs.io/v1/queries", - Network accessline 140
# Each download gets a unique IP yt-dlp --proxy $OXY_WSA_USERNAME-$((1 + RANDOM % 100000)):$OXY_WSA_PASSWORD@$OXY_HB_ENDPOINT:60000 \ "https://www.youtube.com/watch?v=VIDEO_ID" - Network accessline 140
# Each download gets a unique IP yt-dlp --proxy $OXY_WSA_USERNAME-$((1 + RANDOM % 100000)):$OXY_WSA_PASSWORD@$OXY_HB_ENDPOINT:60000 \ "https://www.youtube.com/watch?v=VIDEO_ID" - Network accessline 141
yt-dlp --proxy $OXY_WSA_USERNAME-$((1 + RANDOM % 100000)):$OXY_WSA_PASSWORD@$OXY_HB_ENDPOINT:60000 "https://www.youtube.com/watch?v=VIDEO_ID" - Network accessline 141
yt-dlp --proxy $OXY_WSA_USERNAME-$((1 + RANDOM % 100000)):$OXY_WSA_PASSWORD@$OXY_HB_ENDPOINT:60000 "https://www.youtube.com/watch?v=VIDEO_ID" - Network accessline 142
"https://www.youtube.com/watch?v=VIDEO_ID" - Network accessline 142
"https://www.youtube.com/watch?v=VIDEO_ID" - Access to secretsline 153
[Credential-related source omitted] - Access to secretsline 153
[Credential-related source omitted] - Access to secretsline 154
[Credential-related source omitted] - Access to secretsline 154
[Credential-related source omitted] - Access to secretsline 155
[Credential-related source omitted] - Access to secretsline 155
[Credential-related source omitted] - Network accessline 158
ydl_opts = { "proxy": f"http://{username}-{session_id}:{password}@{endpoint}:60000", - Network accessline 158
ydl_opts = { "proxy": f"http://{username}-{session_id}:{password}@{endpoint}:60000", - Network accessline 159
"proxy": f"http://{username}-{session_id}:{password}@{endpoint}:60000", - Network accessline 159
"proxy": f"http://{username}-{session_id}:{password}@{endpoint}:60000", - Network accessline 164
with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download(["https://www.youtube.com/watch?v=VIDEO_ID"]) - Network accessline 164
with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download(["https://www.youtube.com/watch?v=VIDEO_ID"]) - Network accessline 165
ydl.download(["https://www.youtube.com/watch?v=VIDEO_ID"]) - Network accessline 165
ydl.download(["https://www.youtube.com/watch?v=VIDEO_ID"]) - Access to secretsline 174
[Credential-related source omitted] - Access to secretsline 174
[Credential-related source omitted] - Access to secretsline 175
[Credential-related source omitted] - Access to secretsline 175
[Credential-related source omitted] - Access to secretsline 176
[Credential-related source omitted] - Access to secretsline 176
[Credential-related source omitted] - Network accessline 179
ydl_opts = { "proxy": f"http://{username}-{session_id}:{password}@{endpoint}:60000", - Network accessline 179
ydl_opts = { "proxy": f"http://{username}-{session_id}:{password}@{endpoint}:60000", - Network accessline 180
"proxy": f"http://{username}-{session_id}:{password}@{endpoint}:60000", - Network accessline 180
"proxy": f"http://{username}-{session_id}:{password}@{endpoint}:60000", - Network accessline 190
with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download(["https://www.youtube.com/watch?v=VIDEO_ID"]) - Network accessline 190
with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download(["https://www.youtube.com/watch?v=VIDEO_ID"]) - Network accessline 191
ydl.download(["https://www.youtube.com/watch?v=VIDEO_ID"]) - Network accessline 191
ydl.download(["https://www.youtube.com/watch?v=VIDEO_ID"]) - Access to secretsline 200
[Credential-related source omitted] - Access to secretsline 200
[Credential-related source omitted] - Access to secretsline 201
[Credential-related source omitted] - Access to secretsline 201
[Credential-related source omitted] - Access to secretsline 202
[Credential-related source omitted] - Access to secretsline 202
[Credential-related source omitted] - Network accessline 204
video_urls = [ "https://www.youtube.com/watch?v=VIDEO_ID_1", - Network accessline 204
video_urls = [ "https://www.youtube.com/watch?v=VIDEO_ID_1", - Network accessline 205
"https://www.youtube.com/watch?v=VIDEO_ID_1", - Network accessline 205
"https://www.youtube.com/watch?v=VIDEO_ID_1", - Network accessline 206
"https://www.youtube.com/watch?v=VIDEO_ID_2", - Network accessline 206
"https://www.youtube.com/watch?v=VIDEO_ID_2", - Network accessline 207
"https://www.youtube.com/watch?v=VIDEO_ID_3" - Network accessline 207
"https://www.youtube.com/watch?v=VIDEO_ID_3" - Network accessline 214
ydl_opts = { "proxy": f"http://{username}-{session_id}:{password}@{endpoint}:60000", - Network accessline 214
ydl_opts = { "proxy": f"http://{username}-{session_id}:{password}@{endpoint}:60000", - Network accessline 215
"proxy": f"http://{username}-{session_id}:{password}@{endpoint}:60000", - Network accessline 215
"proxy": f"http://{username}-{session_id}:{password}@{endpoint}:60000", - Access to secretsline 234
[Credential-related source omitted] - Access to secretsline 234
[Credential-related source omitted] - Access to secretsline 235
[Credential-related source omitted] - Access to secretsline 235
[Credential-related source omitted] - Access to secretsline 236
[Credential-related source omitted] - Access to secretsline 236
[Credential-related source omitted] - Network accessline 239
ydl_opts = { "proxy": f"http://{username}-{session_id}:{password}@{endpoint}:60000", - Network accessline 239
ydl_opts = { "proxy": f"http://{username}-{session_id}:{password}@{endpoint}:60000", - Network accessline 240
"proxy": f"http://{username}-{session_id}:{password}@{endpoint}:60000", - Network accessline 240
"proxy": f"http://{username}-{session_id}:{password}@{endpoint}:60000", - Network accessline 244
with yt_dlp.YoutubeDL(ydl_opts) as ydl: info = ydl.extract_info( "https://www.youtube.com/watch?v=VIDEO_ID", - Network accessline 244
with yt_dlp.YoutubeDL(ydl_opts) as ydl: info = ydl.extract_info( "https://www.youtube.com/watch?v=VIDEO_ID", - Network accessline 245
info = ydl.extract_info( "https://www.youtube.com/watch?v=VIDEO_ID", download=False - Network accessline 245
info = ydl.extract_info( "https://www.youtube.com/watch?v=VIDEO_ID", download=False - Network accessline 246
"https://www.youtube.com/watch?v=VIDEO_ID", download=False ) - Network accessline 246
"https://www.youtube.com/watch?v=VIDEO_ID", download=False )
skills/web-scraper-api/SKILL.md
- Network accessline 13
curl -u "$OXY_WSA_USERNAME:$OXY_WSA_PASSWORD" ... - Network accessline 13
curl -u "$OXY_WSA_USERNAME:$OXY_WSA_PASSWORD" ... - Network accessline 19
POST https://realtime.oxylabs.io/v1/queries # immediate response - Network accessline 19
POST https://realtime.oxylabs.io/v1/queries # immediate response - Network accessline 20
POST https://data.oxylabs.io/v1/queries # Push-Pull jobs, callbacks, storage - Network accessline 20
POST https://data.oxylabs.io/v1/queries # Push-Pull jobs, callbacks, storage - Network accessline 68
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 68
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 69
-u "$OXY_WSA_USERNAME:$OXY_WSA_PASSWORD" \ -H 'Content-Type: application/json' \ -d '{"source": "universal", "url": "https://example.com"}' - Network accessline 69
-u "$OXY_WSA_USERNAME:$OXY_WSA_PASSWORD" \ -H 'Content-Type: application/json' \ -d '{"source": "universal", "url": "https://example.com"}' - Network accessline 71
-d '{"source": "universal", "url": "https://example.com"}' - Network accessline 71
-d '{"source": "universal", "url": "https://example.com"}' - Network accessline 76
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 76
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 84
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 84
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 101
"content": "...", "status_code": 200, "url": "https://..." - Network accessline 101
"content": "...", "status_code": 200, "url": "https://..." - Network accessline 102
"status_code": 200, "url": "https://..." }] - Network accessline 102
"status_code": 200, "url": "https://..." }] - Network accessline 103
"url": "https://..." - Network accessline 103
"url": "https://..."
skills/web-scraper-api/examples.md
- Network accessline 7
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 7
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 12
"url": "https://example.com" - Network accessline 12
"url": "https://example.com" - Network accessline 22
"updated_at": "2024-01-15T10:30:01.000Z", "page": 1, "url": "https://example.com", - Network accessline 22
"updated_at": "2024-01-15T10:30:01.000Z", "page": 1, "url": "https://example.com", - Network accessline 23
"page": 1, "url": "https://example.com", "job_id": "7654321", - Network accessline 23
"page": 1, "url": "https://example.com", "job_id": "7654321", - Network accessline 24
"url": "https://example.com", - Network accessline 24
"url": "https://example.com", - Network accessline 35
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 35
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 53
{ "pos": 1, "url": "https://example.com/headphones", - Network accessline 53
{ "pos": 1, "url": "https://example.com/headphones", - Network accessline 54
"pos": 1, "url": "https://example.com/headphones", "title": "Best Wireless Headphones 2024", - Network accessline 54
"pos": 1, "url": "https://example.com/headphones", "title": "Best Wireless Headphones 2024", - Network accessline 55
"url": "https://example.com/headphones", - Network accessline 55
"url": "https://example.com/headphones", - Network accessline 73
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 73
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 95
"seller": "Amazon.com", "categories": ["Electronics", "Smart Home"], "images": ["https://..."], - Network accessline 95
"seller": "Amazon.com", "categories": ["Electronics", "Smart Home"], "images": ["https://..."], - Network accessline 96
"categories": ["Electronics", "Smart Home"], "images": ["https://..."], "description": "..." - Network accessline 96
"categories": ["Electronics", "Smart Home"], "images": ["https://..."], "description": "..." - Network accessline 97
"images": ["https://..."], - Network accessline 97
"images": ["https://..."], - Network accessline 109
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 109
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 149
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 149
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 154
"url": "https://example.com/spa-page", - Network accessline 154
"url": "https://example.com/spa-page", - Network accessline 192
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 192
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 197
"url": "https://example.com", - Network accessline 197
"url": "https://example.com", - Network accessline 216
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 216
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 221
"url": "https://example.com", - Network accessline 221
"url": "https://example.com", - Network accessline 236
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 236
curl -X POST 'https://realtime.oxylabs.io/v1/queries' \ - Network accessline 250
{ "source": "invalid_source", "url": "https://example.com" - Network accessline 250
{ "source": "invalid_source", "url": "https://example.com" - Network accessline 251
"source": "invalid_source", "url": "https://example.com" } - Network accessline 251
"source": "invalid_source", "url": "https://example.com" } - Network accessline 252
"url": "https://example.com" - Network accessline 252
"url": "https://example.com" - Network accessline 272
response = requests.post( - Network accessline 272
response = requests.post( - Network accessline 273
"https://realtime.oxylabs.io/v1/queries", - Network accessline 273
"https://realtime.oxylabs.io/v1/queries", - Access to secretsline 274
[Credential-related source omitted] - Access to secretsline 274
[Credential-related source omitted] - Network accessline 291
const response = await fetch("https://realtime.oxylabs.io/v1/queries", { - Network accessline 291
const response = await fetch("https://realtime.oxylabs.io/v1/queries", {
skills/web-unblocker/SKILL.md
- Network accessline 13
https://unblock.oxylabs.io:60000 - Network accessline 13
https://unblock.oxylabs.io:60000 - Network accessline 21
curl -k -x "https://unblock.oxylabs.io:60000" \ - Network accessline 21
curl -k -x "https://unblock.oxylabs.io:60000" \ - Network accessline 23
"https://example.com" - Network accessline 23
"https://example.com" - Network accessline 30
curl -k -x "https://unblock.oxylabs.io:60000" \ - Network accessline 30
curl -k -x "https://unblock.oxylabs.io:60000" \ - Network accessline 32
"https://ip.oxylabs.io/headers" - Network accessline 32
"https://ip.oxylabs.io/headers" - Network accessline 37
curl -k -x "https://unblock.oxylabs.io:60000" \ - Network accessline 37
curl -k -x "https://unblock.oxylabs.io:60000" \ - Network accessline 38
-U "$OXYLABS_USERNAME:$OXYLABS_PASSWORD" \ -H "x-oxylabs-render: html" \ "https://example.com/spa-page" - Network accessline 38
-U "$OXYLABS_USERNAME:$OXYLABS_PASSWORD" \ -H "x-oxylabs-render: html" \ "https://example.com/spa-page" - Network accessline 40
"https://example.com/spa-page" - Network accessline 40
"https://example.com/spa-page" - Network accessline 60
curl -k -x "https://unblock.oxylabs.io:60000" \ - Network accessline 60
curl -k -x "https://unblock.oxylabs.io:60000" \ - Network accessline 61
-U "$OXYLABS_USERNAME:$OXYLABS_PASSWORD" \ -H "X-Oxylabs-Session-Id: my-session-123" \ "https://example.com/page1" - Network accessline 61
-U "$OXYLABS_USERNAME:$OXYLABS_PASSWORD" \ -H "X-Oxylabs-Session-Id: my-session-123" \ "https://example.com/page1" - Network accessline 63
"https://example.com/page1" - Network accessline 63
"https://example.com/page1" - Network accessline 69
curl -k -x "https://unblock.oxylabs.io:60000" \ - Network accessline 69
curl -k -x "https://unblock.oxylabs.io:60000" \ - Network accessline 70
-U "$OXYLABS_USERNAME:$OXYLABS_PASSWORD" \ -H "X-Oxylabs-Geo-Location: Germany" \ "https://example.com" - Network accessline 70
-U "$OXYLABS_USERNAME:$OXYLABS_PASSWORD" \ -H "X-Oxylabs-Geo-Location: Germany" \ "https://example.com" - Network accessline 72
"https://example.com" - Network accessline 72
"https://example.com"
skills/web-unblocker/examples.md
- Network accessline 7
curl -k -x "https://unblock.oxylabs.io:60000" \ - Network accessline 7
curl -k -x "https://unblock.oxylabs.io:60000" \ - Network accessline 9
"https://example.com" - Network accessline 9
"https://example.com" - Network accessline 14
curl -k -x "https://unblock.oxylabs.io:60000" \ - Network accessline 14
curl -k -x "https://unblock.oxylabs.io:60000" \ - Network accessline 15
-U "$OXYLABS_USERNAME:$OXYLABS_PASSWORD" \ -H "x-oxylabs-render: html" \ "https://example.com/dynamic-page" - Network accessline 15
-U "$OXYLABS_USERNAME:$OXYLABS_PASSWORD" \ -H "x-oxylabs-render: html" \ "https://example.com/dynamic-page" - Network accessline 17
"https://example.com/dynamic-page" - Network accessline 17
"https://example.com/dynamic-page" - Network accessline 22
curl -k -x "https://unblock.oxylabs.io:60000" \ - Network accessline 22
curl -k -x "https://unblock.oxylabs.io:60000" \ - Network accessline 24
-H "X-Oxylabs-Geo-Location: United States" \ -H "X-Oxylabs-Session-Id: session123" \ "https://example.com" - Network accessline 24
-H "X-Oxylabs-Geo-Location: United States" \ -H "X-Oxylabs-Session-Id: session123" \ "https://example.com" - Network accessline 26
"https://example.com" - Network accessline 26
"https://example.com" - Network accessline 31
curl -k -x "https://unblock.oxylabs.io:60000" \ - Network accessline 31
curl -k -x "https://unblock.oxylabs.io:60000" \ - Network accessline 32
-U "$OXYLABS_USERNAME:$OXYLABS_PASSWORD" \ -H "x-oxylabs-render: png" \ "https://example.com" -o screenshot.png - Network accessline 32
-U "$OXYLABS_USERNAME:$OXYLABS_PASSWORD" \ -H "x-oxylabs-render: png" \ "https://example.com" -o screenshot.png - Network accessline 34
"https://example.com" -o screenshot.png - Network accessline 34
"https://example.com" -o screenshot.png - Network accessline 43
proxies = { "http": f"http://{os.environ['OXYLABS_USERNAME']}:{os.environ['OXYLABS_PASSWORD']}@unblock.oxylabs.io:60000", - Network accessline 43
proxies = { "http": f"http://{os.environ['OXYLABS_USERNAME']}:{os.environ['OXYLABS_PASSWORD']}@unblock.oxylabs.io:60000", - Network accessline 44
[Credential-related source omitted] - Network accessline 44
[Credential-related source omitted] - Access to secretsline 44
[Credential-related source omitted] - Access to secretsline 44
[Credential-related source omitted] - Network accessline 45
[Credential-related source omitted] - Network accessline 45
[Credential-related source omitted] - Access to secretsline 45
[Credential-related source omitted] - Access to secretsline 45
[Credential-related source omitted] - Network accessline 48
# Basic request response = requests.get( - Network accessline 48
# Basic request response = requests.get( - Network accessline 49
response = requests.get( - Network accessline 49
response = requests.get( - Network accessline 50
"https://example.com", - Network accessline 50
"https://example.com", - Network accessline 62
proxies = { "https": f"https://{os.environ['OXYLABS_USERNAME']}:{os.environ['OXYLABS_PASSWORD']}@unblock.oxylabs.io:60000" - Network accessline 62
proxies = { "https": f"https://{os.environ['OXYLABS_USERNAME']}:{os.environ['OXYLABS_PASSWORD']}@unblock.oxylabs.io:60000" - Network accessline 63
[Credential-related source omitted] - Network accessline 63
[Credential-related source omitted] - Access to secretsline 63
[Credential-related source omitted] - Access to secretsline 63
[Credential-related source omitted] - Network accessline 71
response = requests.get( - Network accessline 71
response = requests.get( - Network accessline 72
"https://example.com", - Network accessline 72
"https://example.com", - Network accessline 89
const agent = new HttpsProxyAgent( `https://${username}:${password}@unblock.oxylabs.io:60000` - Network accessline 89
const agent = new HttpsProxyAgent( `https://${username}:${password}@unblock.oxylabs.io:60000` - Network accessline 90
`https://${username}:${password}@unblock.oxylabs.io:60000` - Network accessline 90
`https://${username}:${password}@unblock.oxylabs.io:60000` - Network accessline 96
async function fetchPage() { const response = await fetch("https://example.com", { - Network accessline 96
async function fetchPage() { const response = await fetch("https://example.com", { - Network accessline 97
const response = await fetch("https://example.com", { - Network accessline 97
const response = await fetch("https://example.com", { - Network accessline 117
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://example.com"); - Network accessline 117
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://example.com"); - Network accessline 118
curl_setopt($ch, CURLOPT_URL, "https://example.com"); - Network accessline 118
curl_setopt($ch, CURLOPT_URL, "https://example.com"); - Network accessline 119
curl_setopt($ch, CURLOPT_PROXY, "https://unblock.oxylabs.io:60000"); - Network accessline 119
curl_setopt($ch, CURLOPT_PROXY, "https://unblock.oxylabs.io:60000"); - Network accessline 152
proxyURL, _ := url.Parse(fmt.Sprintf( "https://%s:%s@unblock.oxylabs.io:60000", - Network accessline 152
proxyURL, _ := url.Parse(fmt.Sprintf( "https://%s:%s@unblock.oxylabs.io:60000", - Network accessline 153
"https://%s:%s@unblock.oxylabs.io:60000", - Network accessline 153
"https://%s:%s@unblock.oxylabs.io:60000", - Network accessline 162
client := &http.Client{Transport: transport} - Network accessline 162
client := &http.Client{Transport: transport} - Network accessline 164
req, _ := http.NewRequest("GET", "https://example.com", nil) - Network accessline 164
req, _ := http.NewRequest("GET", "https://example.com", nil) - Network accessline 195
URL url = new URL("https://example.com"); - Network accessline 195
URL url = new URL("https://example.com");
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Signal confidence: 1 fact
- Network access in code of the SKILL.mdagent-browser/SKILL.md:44High confidence
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md skills/agent-browser/SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md skills/agent-browser/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md skills/agent-browser/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md skills/agent-browser/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md skills/agent-browser/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.
Explore alternatives and comparisons
Add this badge to your README
It updates every night and links to this page.
[](https://hotskills.dev/skill/oxylabs-agent-skills/)