Skip to main content

âť“ Frequently Asked Questions

Here’s some helpful information to get you started.

What is PumpApi?

PumpApi is a fast Pump.fun API for building trading bots, token launchers, market monitors, analytics tools, and backtesting systems. It also supports trading and real-time data across PumpSwap, Raydium, and Meteora through the same API.

How is PumpApi better than other Pump.fun APIs?

PumpApi is designed to make Solana trading faster, simpler, and more affordable:

  • Faster transactions and data delivery: PumpApi is optimized for both low-latency transaction submission and real-time Data Stream delivery.
  • Only 0.25% trading fees: PumpApi charges 0.25% of trade volume, while competing APIs may charge up to 1%.
  • 100% landing rate: PumpApi Lightning transactions provide a 100% landing rate, compared with rates of around 80% on some competing APIs.
  • More than Pump.fun: One API supports Pump.fun, PumpSwap, Raydium, and Meteora, plus real-time streaming of native Solana and token transfers.
  • FREE Historical Replay: Use our completely free Historical Replay to backtest strategies and replay previous market conditions.
  • FREE real-time data: The Data Stream is completely free.
  • No sign-up required: PumpApi works without an account or API key.
  • Cleaner bot code: Lightning mode handles transaction building, signing, and sending, keeping your integration as short and simple as possible.
  • Solana and token transfer streaming: The Data Stream includes real-time native SOL and token transfers.

We want PumpApi to be the Apple of the Solana world. Every detail is designed to be as simple, polished, and convenient as possible for our users. With PumpApi, your code stays clean and minimal while your bot competes at maximum speed.

I am not a programmer. How can I create a Pump.fun trading bot?

We offer two options:

  1. The easiest option: PumpApi Agent. You pay for your AI agent's server and AI usage, then simply describe the bot you want. PumpApi Agent has preinstalled PumpApi skills that help it build the bot, run it on the remote server, and assist you with future changes. It is a modified version of Hermes Agent designed to make PumpApi automation accessible to non-programmers.
  2. Run a coding agent yourself. Install Claude Code, Codex, or Hermes Agent on your computer or server. Give it the complete PumpApi documentation, then describe the bot you want it to build. For the simplest AI-generated implementation, ask it to use Lightning mode: the transaction workflow and resulting code are shorter, so the coding agent has less complexity to handle.
Is PumpApi fast?

Yes. PumpApi is built for low-latency Solana trading and real-time data delivery. Our servers are located in Frankfurt am Main, Germany, close to major Solana validator and RPC infrastructure. We also use multiple optimizations to build, deliver, and send your transactions as quickly as possible.

For the lowest possible latency, we recommend hosting your trading bot or server in or near Frankfurt.

Do I need an API key or an account to use PumpApi?

No. You do not need an API key, account, or sign-up to use PumpApi. You can connect to the Data Stream and start using the Trade API without creating an account.

Can I build a pump.fun trading bot with PumpApi?

Yes. PumpApi provides the real-time events and transaction API needed to build automated pump.fun trading bots, sniper bots, copy-trading tools, token launchers, wallet monitors, and analytics dashboards.

PumpApi also supports PumpSwap, Raydium, and Meteora, so the same bot can work across multiple Solana platforms through one API.

Should I build my own Pump.fun trading and Data Stream parser?

No. A complete custom implementation can take months of work and will still be slower than using PumpApi.

PumpApi handles a large amount of internal complexity for you. We understand the common requirements of Pump.fun bot developers and already handle problems such as incorrect event parsing, high latency, transactions that fail to land, program-specific errors, and changes to the underlying Solana programs. We monitor program updates so you do not have to continually update your own parser and transaction implementation.

Most of the infrastructure your bot needs is already available through PumpApi. Copy the complete PumpApi documentation into your coding AI and describe what you want it to build. For the shortest and simplest implementation, ask it to use Lightning mode.

It’s much easier to ask us to add a feature you need than to try to build it yourself.

How much does PumpApi cost?

The Data Stream and Historical Replay are FREE. Buy and sell transactions through the Trade API cost 0.25% of trade volume. See the Fees page for the current fees for all other operations.

What is the difference between Lightning and Local transactions?

With Lightning transactions, PumpApi builds, signs, and sends the transaction directly to Solana for you. Lightning mode requires you to provide the private key or apiKey of the dedicated trading wallet used by your bot. In return, PumpApi can handle the complete transaction flow, achieve maximum speed and a 100% landing rate, and keep your bot code clean and as short as possible. We recommend Lightning mode because it is the fastest and simplest option to integrate.

With Local transactions, PumpApi builds the transaction and returns it to your application. Local mode is slower because your application must sign and send the transaction itself, but you do not need to send your private key to PumpApi. Your private key stays in your own application, giving you full control over signing and RPC delivery. Usually this method is used by Web app builders - your users sign transactions themselves via wallet extensions (Phantom, Solflare, Backpack…). Request an unsigned transaction from us with the user's publicKey, pass it to the wallet extension for signing, then broadcast it.

Local transaction flow:

Your bot → PumpApi → Your bot receives an unsigned transaction → Solana (your bot signs and sends it through your RPC)

Lightning transaction flow:

Your bot → PumpApi → Solana

Do I need to send my private key to PumpApi?

Not when using Local transactions. Your application sends only the public key to PumpApi, receives the prepared transaction, and signs it locally. Your private key remains in your own application.

Lightning mode requires the private key or apiKey of the dedicated trading wallet used by your bot. This allows PumpApi to build, sign, and send the transaction directly to Solana, which provides maximum speed, a 100% landing rate, and much shorter and cleaner bot code. We recommend Lightning mode because it is the simplest and fastest workflow. Choose Local mode instead if keeping transaction signing entirely inside your application is a requirement.

How do I generate a new Solana wallet?

We recommend keeping your main wallet separate from the funds used for automated trading. Create a dedicated Solana wallet for your bot and transfer only the amount you intend to trade with.

Keep the generated private key secret. Anyone who has it can control the wallet and its funds.

Install the dependency:

pip install solders

Generate the wallet:

from solders.keypair import Keypair

keypair = Keypair()

print("Your Solana base58 private key:", keypair)
print("Your Solana base58 public key:", keypair.pubkey())
What is Historical Replay?

Historical Replay is a FREE archive of past Data Stream events. You can use it to backtest trading strategies, replay previous market conditions, research token launches, and test your bot before using it in live trading.

Read the Historical Replay documentation.

Which pools do you support?

We support the following platforms for both trading and data stream APIs:

  • pump.fun
  • pump-amm
  • Raydium Launchpad (including Bonk)
  • Raydium CPMM
  • Meteora Launchpad (including Bags, moonshot)
  • Meteora DAMM V1
  • Meteora DAMM V2
  • Meteora DLMM

In addition, we also support:

  • Native Solana (SOL) transfers
  • Token transfers
How can I have more than 2 connections to the data stream?

We send a very large number of transactions, so to avoid overloading our server, there is a strict limit of 1 connection per IP address.

You can use ZeroMQ (highly recommended; it's extremely simple to use). The idea is straightforward:

You run a single instance that receives all transactions from our server. Then, from that instance, you share each transaction using the PUB/SUB method.

Here's how it works: You send data to a specific port, for example, 8939. Then the SUB (subscribers — your two, three, or more bots) connect to this port and receive all the transactions.

This way, you only have one connection for all three bots. ZeroMQ is currently the most efficient solution (latency is practically nonexistent — measured in nanoseconds). But you can also use WebSockets to stream locally (a bit slower — latency in microseconds). This method may be better because you only need to change one URL from "wss://stream.pumpapi.io" to "ws://127.0.0.1:9999":

Here's an example of the data stream sender (just run it and do not close it):

ZeroMQ method. Super fast. Requires a few changes on the bot side
import asyncio
import websockets
import zmq # pip install pyzmq
import sys

ctx = zmq.Context()

if sys.platform == "win32":
sock = ctx.socket(zmq.PUB)
sock.bind("tcp://127.0.0.1:8939")
else:
sock = ctx.socket(zmq.PUB)
sock.bind("ipc://8939") # On Linux, IPC is slightly faster than TCP

async def connect_pumpapi_stream():
while True:
try:
async with websockets.connect("wss://stream.pumpapi.io") as ws:
while True:
msg = await ws.recv()
sock.send(msg)
except Exception as e:
print(e)
await asyncio.sleep(1)

asyncio.run(connect_pumpapi_stream())
Here's an example of your bot that receives transactions (the getter):

Synchronous version:

import zmq # there's also asynchonios package zmq.asyncio
import sys
import orjson # or json

ctx = zmq.Context()
if sys.platform == "win32":
sock = ctx.socket(zmq.SUB)
sock.connect("tcp://127.0.0.1:8939")
else:
sock = ctx.socket(zmq.SUB)
sock.connect("ipc://8939") # On Linux, IPC is slightly faster than TCP

sock.setsockopt_string(zmq.SUBSCRIBE, "")

while True:
msg = sock.recv()
msg = orjson.loads(msg)
print(msg)

Asynchronous version:

import zmq.asyncio
import sys
import orjson
import asyncio

ctx = zmq.asyncio.Context()
if sys.platform == "win32":
sock = ctx.socket(zmq.SUB)
sock.connect("tcp://127.0.0.1:8939")
else:
sock = ctx.socket(zmq.SUB)
sock.connect("ipc://8939") # On Linux, IPC is slightly faster than TCP

sock.setsockopt_string(zmq.SUBSCRIBE, "")

async def runner():
while True:
msg = await sock.recv()
msg = orjson.loads(msg)
print(msg)

asyncio.run(runner())
WebSockets method. Fast. No changes required. You just need to change the link on the bot side to ws://127.0.0.1:9999.
import asyncio
import websockets

clients = set()

async def client_handler(websocket):
clients.add(websocket)
try:
await websocket.wait_closed()
finally:
clients.remove(websocket)

async def relay():
print("Relay started.")
while True:
try:
async with websockets.connect("wss://stream.pumpapi.io") as ws:
async for msg in ws:
for client in list(clients):
asyncio.create_task(client.send(msg))
except Exception as e:
print(e)
await asyncio.sleep(0.2)
print("Reconnecting...")

async def main():
server = await websockets.serve(client_handler, "localhost", 9999)
await relay()

asyncio.run(main())
Why do you send all transactions through the Data Stream? Can my computer handle that?

Some users worry that we're sending too many transactions — but in reality, it’s not as much as it might sound. We send around 300-400 transactions per second, covering all events across all pools and all solana and token transfers, and each transaction is very small in size.

Even older processors can easily handle this load. In fact, most modern servers, desktops, and laptops would be capable of processing over 30,000 of these lightweight events per second without any special optimization. So there's no need to worry — your machine can handle it just fine.

We designed it this way to ensure faster delivery and greater flexibility. Instead of requiring you to query us for updates or specific token transfers, you receive everything in real time — instantly, and with much less complexity on your side.

Where is your server located? I want the lowest possible latency!

Our server is located in Frankfurt am Main, close to the Solana RPC infrastructure (68% of validators are in Europe, most of them in Frankfurt). This helps ensure the lowest possible latency for trading and data stream. Your server location is very important: if it's in America, you can lose up to 200 ms.

If you're running infrastructure or bots, we recommend hosting them as close to Frankfurt as possible for the best performance.

Even if you're not in Frankfurt — or your server isn't — don’t worry! Thanks to efficient message delivery and lightweight transactions, performance will still be very fast and more than sufficient for most use cases.

Have a question? Ask us in our Telegram group