Solana DEX Scraper — Raydium + Orca Dev-Grade Swap Stream
Under maintenancePricing
from $2.00 / 1,000 swap event extracteds
Solana DEX Scraper — Raydium + Orca Dev-Grade Swap Stream
Under maintenanceExtract normalized swap events from Solana's largest spot DEXes: Raydium AMM v4 and Orca Whirlpool. Per-swap rows with signer, mints, amounts, USD pricing, and fee data. Built for MEV/arb bot devs, copy-trading systems, and on-chain analytics. Bring your own RPC. No login required.
Pricing
from $2.00 / 1,000 swap event extracteds
Rating
0.0
(0)
Developer
Sami
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Solana DEX Scraper — Raydium + Orca Swap Stream API
The Solana DEX swap data API for MEV bots, copy-trading systems, and on-chain analytics. Extract normalized swap events from Raydium AMM v4 and Orca Whirlpool — one clean record per swap with wallet address, token mints, amounts, USD pricing (via Jupiter Price v3), and fee data. Helius / QuickNode alternative at $0.001 per event. Bring your own RPC URL. No login, no API key, no geyser node required.
Why this Actor exists
If you're building on Solana, your options for normalized swap data today are:
- Helius / QuickNode / Triton Premium tiers — $99–499/mo just to get indexed history. Locked into one vendor's schema. Per-event metering on enhanced webhooks gets expensive at scale.
- Self-hosted geyser plugin / gRPC validator — 200GB+ of state, snapshot sync nightmares, dedicated ops effort.
- Bitquery enterprise — quote-only pricing in the $20K–$100K/year band.
- Roll your own RPC parser — a sprint of work to handle Token-2022, versioned transactions, address lookup tables, balance-delta decoding, partial fills.
This Actor is the middle path. One record per swap. One normalized schema across DEXes. Pay $0.001 per event you actually extract — no monthly subscription, no per-seat licensing, no overage charges. Plug in any RPC URL you already have (Helius free tier, Triton, your own validator, etc.).
Pairs well with the Hyperliquid Pro Scraper if you also trade perpetuals — same dev-grade schema philosophy, complementary DeFi coverage (spot DEX on Solana + perpetual DEX on Hyperliquid L1).
How to use it in 3 steps
- Open Solana DEX Scraper on Apify Store and click Try for free
- Pick a mode and paste your RPC URL (or use the public default for a test run)
- Click Run and download as JSON, CSV, Excel, or XML
No code required. Works with Apify's free tier.
What's NOT included (compliance)
This Actor is intentionally scoped to Solana's broader AMM ecosystem. It does NOT:
- Scrape Pump.fun (different ecosystem with a different compliance posture — out of scope for v0.1)
- Use any private RPC bypass, validator keypair, or geyser plugin
- Decode MEV-specific data (bundle inclusion, sandwich detection, validator-side flow)
- Require any login, auth, or signing key
Every extraction is from public on-chain state via standard Solana JSON-RPC. All instruction parsing uses the published Anchor IDLs / open-source program layouts.
5 Modes
| Mode | What you get | Best for |
|---|---|---|
swaps_by_token | All recent swaps for a token mint across both DEXes | Momentum tracking, token velocity, copy-trade signal generation |
swaps_by_wallet | A wallet's full swap history across both DEXes | Shadow-trading, PnL attribution, smart-money tracking |
swaps_by_pool | One pool's swap activity | LP analysis, pool concentration tracking, impermanent-loss modeling |
recent_swaps | Generic firehose with DEX / token / minimum-size filters | Whale-flow monitoring, ecosystem-wide analytics |
pool_metadata | Resolve a pool address to token pair + fee tier + liquidity | Pipeline enrichment, pool discovery |
Output schema (swap modes)
| Field | Type | Description |
|---|---|---|
mode | string | Source mode label |
dex | string | raydium_v4 or orca_whirlpool |
poolAddress | string | Pool / whirlpool account |
signature | string | Transaction signature |
slot | int | Solana slot number |
blockTime | ISO 8601 | Confirmation time, UTC |
signer | string | Wallet that signed the swap tx |
mintIn | string | SPL token going INTO the pool |
mintOut | string | SPL token coming OUT to the signer |
amountIn | float | UI-scaled amount (by token decimals) |
amountInUsd | float / null | USD notional (Jupiter Price v3) |
amountOut | float | UI-scaled amount |
amountOutUsd | float / null | USD notional |
priceIn / priceOut | float / null | USD prices used for conversion |
feeBps | int / null | Fee in basis points (Raydium v4 = 25; Orca = per-pool) |
feeUsd | float / null | Estimated fee in USD |
errorStatus | null | string | null for successful swaps |
explorerUrl | url | Solscan link |
scrapedAt | ISO 8601 | When the record was emitted |
Output schema (pool_metadata mode)
| Field | Type | Description |
|---|---|---|
mode | string | pool_metadata |
dex | string | raydium_v4 or orca_whirlpool |
poolAddress | string | Input pool account |
tokenA | object | {mint, symbol, decimals} |
tokenB | object | {mint, symbol, decimals} |
feeTierBps | int / null | Fee in basis points |
tickSpacing | int / null | Whirlpool tick spacing (Orca only) |
liquidityUsd | float / null | Live USD value of vault A + vault B |
volume24hUsd | float / null | Reserved for v0.2 |
explorerUrl | url | Solscan account link |
scrapedAt | ISO 8601 |
Input examples
Monitor all swaps for a specific token (e.g. JUP)
{"mode": "swaps_by_token","tokenMint": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN","maxResults": 1000,"includeUsdPrices": true,"rpcUrl": "https://api.mainnet-beta.solana.com"}
Shadow-trade a wallet
{"mode": "swaps_by_wallet","walletAddress": "DfXygSm4jCyNCybVYYK6vbnGv8ekCfRRsVwh9NXKbVbu","maxResults": 500,"fromTimestamp": "2026-05-01T00:00:00Z","rpcUrl": "<your Helius / QuickNode URL>"}
Watch one pool's flow
{"mode": "swaps_by_pool","poolAddress": "Czfq3xZZDmsdGdUyrNLtRhGc47cXcZtLG4crryfu44zE","maxResults": 2000,"rpcUrl": "<your RPC URL>"}
Whale-flow firehose (>$10K swaps on Raydium only)
{"mode": "recent_swaps","dexes": ["raydium_v4"],"minAmountUsd": 10000,"maxResults": 1000,"rpcUrl": "<your RPC URL>"}
Resolve a pool
{"mode": "pool_metadata","poolAddress": "Czfq3xZZDmsdGdUyrNLtRhGc47cXcZtLG4crryfu44zE","rpcUrl": "https://api.mainnet-beta.solana.com"}
Pricing
Pay-per-event — you only pay for records the Actor extracted.
| Event | Price | What triggers it |
|---|---|---|
swap-event | $0.001 | One normalized swap record emitted |
wallet-history-batch | $0.05 | One page of wallet signatures pulled (up to 1000 signatures, includes the deep RPC scan cost) |
pool-metadata | $0.002 | One pool address resolved to tokens + fee + liquidity |
Volume math
| Workload | Volume | Monthly cost |
|---|---|---|
| Track 5 tokens, 100 swaps/day each | 15,000 swaps/mo | ~$15/mo |
| Bot ingesting all whale swaps (>$10K) on Raydium | ~5K swaps/day | ~$150/mo |
| Copy-trader shadowing 50 wallets, full daily history | ~10K history batches/mo | ~$500/mo |
| Liquidity dashboard, 100 pools refreshed hourly | ~72K pool-metadata/mo | ~$144/mo |
Apify compute time is included — you don't pay for run duration, only the data you extract.
Free trial: $5 of credits over 7 days. Enough for ~5K swaps, ~100 wallet histories, or ~2.5K pool resolutions.
Bring your own RPC
The public default https://api.mainnet-beta.solana.com is heavily rate-limited and for testing only. For any production workload, plug in your own RPC URL via the rpcUrl input:
- Helius — full-history archival, geyser-fed. From ~$99/mo for indexed endpoints.
- QuickNode — solid mainnet RPC at ~$49/mo entry tier.
- Triton One — premium low-latency dedicated nodes.
Your RPC URL is treated as a secret input — Apify masks it in logs and the run config UI.
Use cases
- Copy-trade signal generation —
swaps_by_wallet+minAmountUsdfilter → ingest into your bot's queue - Token momentum tracking —
swaps_by_tokenover rolling 1h windows → compute net-flow / VWAP - LP / pool analysis —
swaps_by_pool+pool_metadata→ impermanent-loss modeling, fee-yield estimation - Whale flow dashboards —
recent_swapswithminAmountUsd: 10000→ Slack/Discord alerts - Backtesting datasets — pull months of swaps from
swaps_by_poolas training data
Quickstart — Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")# Monitor every swap of the JUP token across Raydium + Orca, last 1000 swapsrun = client.actor("zhorex/solana-dex-scraper").call(run_input={"mode": "swaps_by_token","tokenMint": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN","maxResults": 1000,"minAmountUsd": 100, # skip dust swaps"rpcUrl": "https://YOUR_HELIUS_RPC_URL",})for item in client.dataset(run["defaultDatasetId"]).iterate_items():in_sym = item["mintIn"][:8]out_sym = item["mintOut"][:8]usd = item.get("amountInUsd") or 0print(f"{item['blockTime']} {item['dex']:14s} "f"{in_sym}->{out_sym} ${usd:>12,.2f} "f"{item['signer'][:8]}...")
Quickstart — JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('zhorex/solana-dex-scraper').call({mode: 'recent_swaps',dexes: ['raydium_v4', 'orca_whirlpool'],minAmountUsd: 10000,maxResults: 200,rpcUrl: 'https://YOUR_HELIUS_RPC_URL'});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`${items.length} whale swaps in the last window.`);
FAQ
Does it require any Solana account or login? No. All reads are public on-chain data via JSON-RPC.
Why bring my own RPC? Solana RPC is a heavy operation. By default we use the public api.mainnet-beta.solana.com for testing, but it'll throttle you to a handful of requests per second. Plugging your own Helius/QuickNode key keeps the throughput, latency, and cost under your control — and we don't have to bundle a paid endpoint into the actor price.
Will this catch every swap? It catches every swap whose transaction is in the RPC's history and whose pre/postTokenBalances cleanly express the signer's swap legs (>99% of real swaps). It does NOT catch swaps that failed (err != null) or swaps where the signer is not the beneficiary (e.g. complex relayer-mediated flows). For aggregator-routed swaps (Jupiter v6), we currently report the leg the user's wallet actually received — the routed inner DEXes are visible via the explorerUrl.
What about Pump.fun? Intentionally out of scope. Different ecosystem, different compliance posture. Pump.fun-specific data is best sourced from a dedicated Actor.
What about Meteora DLMM and Jupiter routing? Planned for v0.2. The current decoder architecture is layout-agnostic (balance-delta parsing), so adding new DEXes is straightforward — open an issue if you have a specific need.
Solana reorgs? We default to commitment: confirmed, which gives 2-block safety. Switch to finalized in the input for strict 32-block safety at the cost of ~13s additional latency.
Token-2022? Yes. Both classic SPL Token and Token-2022 transfers are decoded.
What's the latency from on-chain swap to scraped record? Limited by your RPC's indexing lag. On Helius, typically <1s after confirmation.
Integrations
Export as JSON, CSV, Excel, XML. Wire up:
- Google Sheets — automatic dashboards
- Zapier / Make / n8n — alert on whale swaps, large LP moves
- REST API + Webhooks — push to your own infra on every run
- BigQuery / Snowflake — bulk ingestion via Apify's storage exports
Coming in v0.2
- Meteora DLMM — dynamic liquidity AMM
- Jupiter v6 aggregator — decode each leg of routed swaps
- New-token-launch detection — first-trade slot per mint
- Pool 24h volume — historical aggregation
- DCA / limit-order events — Jupiter DCA program
Open an issue if you have a feature you want prioritized.
Other scrapers by Zhorex
DeFi & Markets:
- Hyperliquid Pro Scraper — Perp DEX leaderboard, wallets, vaults, markets
- Solana DEX Scraper — (this Actor)
- TradingView Multi-Market Scraper — Stocks, crypto, forex, indices
- Forex Factory Scraper — Economic calendar
AI & Search:
Chinese Digital Intelligence Suite:
B2B Review Intelligence:
Your review matters ⭐
If this Actor saved you a sprint of RPC-parsing work, a 30-second review helps a lot:
- Go to the Solana DEX Scraper page
- Click the star rating
- Optionally drop a one-line note ("used this for copy-trade signals on Raydium" etc.)
Why it matters: reviews are the #1 signal Apify devs check before trying a scraper. The first 5–10 reviews dramatically improve discovery for everyone.
Found a bug or want a new DEX? Open an issue — typically fixed within 48 hours.
🏢 Running a quant fund, MEV bot, or copy-trading platform?
If your pipeline ingests 10K+ swap records per day or needs continuous wallet polling, I offer:
- Custom output schemas matching your warehouse / data-lake format
- Schema stability SLA — no breaking changes without 30-day notice
- Volume pricing above 100K events/month
- Priority DEX additions (Meteora, Phoenix, Lifinity, etc.) on a custom timeline
- Dedicated indexer infrastructure for sub-second latency
DM me on Apify, open an Issue titled "Enterprise inquiry", or email samimassis2002@gmail.com.
Last updated: May 2026 · Actively maintained · Built by the developer of Hyperliquid Pro Scraper, TradingView Multi-Market Scraper, and 15+ other production Apify Actors.