For trading terminals
Indexing nasdegen launches
For Axiom, GMGN, DexScreener, Photon, BullX and any terminal that tags launchpads: which contracts create a nasdegen.fun launch, the events to watch, how to find each pool and how to place a launch in your columns. Addresses on this page are read from the site's live configuration. Machine-readable: indexing in /api/integrate/kit.json.
A launch is a (chain, token) pair.Watch the factories, follow the pool ids they announce, keep the raw event next to your normalised row.
Index launches
Identify by chain and token, never by name or pool alone.
A nasdegen.fun launch is identified by its chain and its token address (on Solana, the base mint). One token can trade in several pools, and a curve coin changes venue once, so key your row by (chain, token) and hang pools under it. Store the source event (emitter, transaction hash, log index, block hash) beside the normalised row: it is what lets you prove a launch came from one of the contracts below and repair the row after a reorg. Display data (name, logo, links) is off-chain metadata; fetch it separately and cache it.
Launch kinds
The API and the read model use three kinds: pool (a direct launch into a locked Uniswap v4 pool), curve (a bonding curve that graduates into a pool) and listing (an existing token brought into a locked pool). Solana launches are Meteora bonding curves and read as curve.
Creator and launcher
The launch event's launcher is the address that called the factory. When that is the LaunchAndBuy router, the real creator is LaunchedVia.creator in the same transaction (or creatorOf(token) on the router). The API's creator field already resolves this; show it, not launcher.
EVM sources
The contracts that create launches, per chain, from the deployed configuration.
Base
chain id 8453Basescan- LaunchFactorykind pool
0xFf66c00C1eE1079B425fEF4e5E6682ae6beb188E- LaunchAndBuykind pool
0x7418B19a20E693377703325fe15b25599724E2D5- ListingFactorykind listing
0x68dB27053AA61E226379060A7AAC33BfEd555d4e- CurveFactorykind curve
0xD8c5d2860abFE05705E412e7debb3d1Fd2d46dDB- RulesLaunchFactoryV3kind pool
0xb936057CE0e50891655e559A196F007E6ac72B00- FeeStyleLaunchFactorykind pool
0x99f05241BD59848080A54f3C9195AE186CA38e51- CreatorFeeLaunchFactorykind pool
0xCA39a6851AeCaA3221C8eEBF0EAD868AABb7383E- PegLaunchFactorykind pool
- not deployed yet
Hooks on launch pools
- LiquidityGatedirect and listing pools
0x5A56d12AdBD415021826B884ccFdF5a54cbD2800- CurveHookgraduated curve pools
0xeA1A065e89611999bADfcBa24305d71Ac2fBa844- FeeStyleHookfee-style pools
0x65F562786542c2cd26Cfa0f7925Da472d6aF6880- PoolManagerUniswap v4, every Swap
0x498581fF718922c3f8e6A244956aF099B2652b2b
Robinhood Chain
chain id 4663Blockscout- LaunchFactorykind pool
0xa987eD06C8d386C796c4E49AA09Aa83361fbECc9- LaunchAndBuykind pool
0x04D6cbA8b9b3B5A6D2D1F6f2F2C53e3EE65C720c- ListingFactorykind listing
0x68dB27053AA61E226379060A7AAC33BfEd555d4e- CurveFactorykind curve
0xa93A9b7A38D36B8882878558B178720592A79A4E- RulesLaunchFactoryV3kind pool
0xc03fc0f3D8Ba1Fe95D01212038721c5Ef7f8368a- FeeStyleLaunchFactorykind pool
0x6ae0BD0ffdA8Db5930774EAC67525E0049832a9c- CreatorFeeLaunchFactorykind pool
0x34967D54e4B45aeDeD25649741eA6188eBa20CaC- PegLaunchFactorykind pool
- not deployed yet
Hooks on launch pools
- LiquidityGatedirect and listing pools
0xdac33249139E490DAFA09219e1EE125bf6f4a800- CurveHookgraduated curve pools
0x7779d6EddAbb17E8153b1d3e6dfb1379887D6844- FeeStyleHookfee-style pools
0xFa0651e29D1690D2B32c5897AC6a175EAd5D2880- PoolManagerUniswap v4, every Swap
0x8366a39CC670B4001A1121B8F6A443A643e40951
BNB Chain
chain id 56BscScan- LaunchFactorykind pool
0xaB7FFC770fF5e7FeD0677c179e897A690ed4eBD9- LaunchAndBuykind pool
0xcBEB49eE51706D6C169276f44F5A613594586Bf2- ListingFactorykind listing
0x68dB27053AA61E226379060A7AAC33BfEd555d4e- CurveFactorykind curve
0x0e5676B609CE83DD299A1025D188548764A913e4- RulesLaunchFactoryV3kind pool
0x6A92BfcFaa107ba8686D4285521f5C7d67F16f6B- FeeStyleLaunchFactorykind pool
0x8AE2ea8Cbd61869f8dF32563ECC38AD62A8141a9- CreatorFeeLaunchFactorykind pool
0x31637Eb0FaA1fE3EBFcF2939424979fB6aac8734- PegLaunchFactorykind pool
- not deployed yet
Hooks on launch pools
- LiquidityGatedirect and listing pools
0xC210DE2457fBeC8a7A8C6D884cc2259E4C102800- CurveHookgraduated curve pools
0x5214be97Ac1D5F4d86a378A5B75B289f114ba844- FeeStyleHookfee-style pools
0xC1cB0e098E709e9eB35989C200FDde5e6812e880- PoolManagerUniswap v4, every Swap
0x28e2Ea090877bF75740558f6BFB36A5ffeE9e9dF
A blank means that contract is not deployed on that chain yet; nothing on this page is a placeholder. Pools indexed before the LiquidityGate existed are hookless, so always read the real hook from the factory's poolKeyOf or from hooks on the API row.
Events and pools
Signatures and topic0 computed from the ABI the site's own indexer decodes with.
Filter logs by the source addresses above, then follow the pool ids they announce on the PoolManager. Several factories emit a Launched with the same signature and topic0, so the emitter address is what tells them apart. Every pool id is the Uniswap v4 id of the PoolKey (keccak256(abi.encode(key))); the launch events carry it, so you rarely need to compute it.
LaunchFactory (kind pool). Direct launches: deploys the token, opens a Uniswap v4 pool and locks 100% of the supply as one single-sided position. One token can open several pools at once (a multi-pair launch).
PoolKey: currency0 = quote, currency1 = token (the factory mines a salt so the token sorts above its quote), fee = Launched.lpFee (10000 to 30000 pips), tickSpacing = 200, hooks = the chain's LiquidityGate. Read it with factory.poolKeyOf(token) (first pool) or factory.poolKeyAt(token, i) / factory.poolsOf(token).
| Event | topic0 | Use |
|---|---|---|
| LaunchFactory.Launchedevent Launched(address indexed token, uint256 indexed tokenId, address indexed launcher, address quote, bytes32 poolId, int24 startTick, uint24 lpFee, uint256 supply, string metadataURI) | 0xda18b133e41a7fe4e3adc625c6eeaf9237558c875e411398a623cc9603aad0a9 | a new launch: token, tokenId (the locked position), launcher, quote, poolId, startTick, lpFee, supply, metadataURI. A multi-pair launch emits one per pool with the same token. |
| LaunchFactory.MultiPairLaunchedevent MultiPairLaunched(address indexed token, bytes32[] poolIds) | 0xa61112d06e0155d1f17b7bcef94fc48ca0406c6bc3152aca945cc8e835555479 | the full pool set of a multi-pair launch, in order |
| LaunchFactory.RewardPoolCreatedevent RewardPoolCreated(address indexed token, address indexed pool, address indexed quote) | 0xcccf10613f67792eecfb9a80ab0ceb4928e43c66255e7a39e9dd5a2dad5bc103 | the creator side of the fees goes to holders through this RewardPool |
| LaunchFactory.FeeVaultCreatedevent FeeVaultCreated(address indexed token, address indexed vault, address indexed quote, uint8 mode) | 0x255add866ba2eeef650e4e30a49e793bf95621d59796d33c2f5cfca46bc7300a | the creator side of the fees goes to a FeeVault module (mode) |
LaunchAndBuy (kind pool). A router that launches through the LaunchFactory and makes the creator's first buy in the same transaction. The factory then records the router as launcher.
PoolKey: the LaunchFactory's (the router only calls it)
| Event | topic0 | Use |
|---|---|---|
| LaunchAndBuy.LaunchedViaevent LaunchedVia(address indexed creator, address indexed token, uint256 tokenId, uint256 quoteIn, uint256 tokensOut) | 0x5bf63f84755bf9de4570848428b2e7a8fff53eb980b51ae4c555467365a14630 | the real creator of a router launch; quoteIn / tokensOut are the first buy. Show creator = LaunchedVia.creator (or router.creatorOf(token)), never the router. |
ListingFactory (kind listing). An existing ERC-20 brought into a locked pool (no new token is deployed).
PoolKey: currency0 = quote, currency1 = token, fee = Listed.lpFee, tickSpacing = 200, hooks = the LiquidityGate. Read it with listingFactory.poolKeyOf(tokenId).
| Event | topic0 | Use |
|---|---|---|
| ListingFactory.Listedevent Listed(address indexed token, uint256 indexed tokenId, address indexed lister, address quote, bytes32 poolId, int24 startTick, uint24 lpFee, uint256 amount, string metadataURI) | 0xad5a4aaa469875ff13658232c22a8ba97398205fa40bdf452cdbd83b1ee2d117 | a new listing: token, tokenId, lister, quote, poolId, startTick, lpFee, amount locked, metadataURI |
CurveFactory (kind curve). Bonding-curve launches. Trading starts on a per-launch BondingCurve contract and moves to a locked Uniswap v4 pool at graduation.
PoolKey: ordered by address (token_is_currency0 says which side the token is), fee = 0 in the key (the CurveHook charges the fee), tickSpacing = 200, hooks = the CurveHook. Read it with curveFactory.poolKeyOf(token), valid before and after graduation.
| Event | topic0 | Use |
|---|---|---|
| CurveFactory.CurveLaunchedevent CurveLaunched(address indexed token, address indexed curve, address indexed launcher, address quote, address creatorFeeRecipient, uint256 supply, uint256 phantomQuote, uint256 graduationThreshold, uint16 feeBps, uint16 creatorTaxBps, string metadataURI) | 0x41a83fcb07d214b946bf3ed8ff5921bef5a4459be08287b8fe86e3de08103c08 | a new curve: token, curve (the BondingCurve to watch), launcher, quote, supply, phantomQuote, graduationThreshold, feeBps, creatorTaxBps, metadataURI |
| CurveFactory.CurveLaunchOptionsevent CurveLaunchOptions(address indexed token, uint32 snipeWindow, uint16 snipeStartBps, uint16 airdropBps, uint256 airdropTokens) | 0x718dd73f4177b643a4c4da4072fb4f3b3ca5d40c5714252c6b1a547aea4b8ecd | snipe shield and airdrop reserve, right after CurveLaunched |
| BondingCurve.CurveBuyevent CurveBuy(address indexed buyer, address indexed recipient, uint256 quoteIn, uint256 tokensOut, uint256 fee, uint256 tax) | 0xec36bf571f136799e8dc0b0b8bea4b04d8bd3d43de838aab0d5fc21d4cbfc455 | a buy on the curve (emitted by the per-launch curve address) |
| BondingCurve.CurveSellevent CurveSell(address indexed seller, address indexed recipient, uint256 tokensIn, uint256 quoteOut, uint256 fee, uint256 tax) | 0x8113d738abdcb6b38357e9d53a54a7157861a09031b453651f0fe7fe151f59df | a sell on the curve |
| CurveFactory.Graduatedevent Graduated(address indexed token, bytes32 indexed poolId, uint256 indexed tokenId, address quote, uint256 quoteAmount, uint256 tokenAmount, uint256 tokensBurned, uint160 sqrtPriceX96) | 0xd4df01b899fd11e56dd1988cc7505f0cb8fcbf6e06af3a4d3ee20936f3529072 | the curve moved into its v4 pool: poolId, tokenId, quoteAmount, tokenAmount, sqrtPriceX96. This is the Completed signal. |
| CurveFactory.Abandonedevent Abandoned(address indexed token, address indexed venue, uint256 refundQuote, uint256 refundSupply) | 0x56189f752f9a4ea9b583fa556ef1d10e6993eaa22c72ade4f03c9a63c80a5fde | the curve stalled and switched to refunds: trading is closed |
RulesLaunchFactoryV3 (kind pool). Direct launches of a coin with trading hooks built into the token. The supply is locked in a v4 pool the same way as a LaunchFactory launch.
PoolKey: currency0 = quote, currency1 = token, tickSpacing = 200, hooks = the factory's RulesGate. Read it with rulesFactoryV3.poolKeyOf(token).
| Event | topic0 | Use |
|---|---|---|
| RulesLaunchFactoryV3.Launchedevent Launched(address indexed token, uint256 indexed tokenId, address indexed launcher, address quote, bytes32 poolId, int24 startTick, uint24 lpFee, uint256 supply, string metadataURI) | 0xda18b133e41a7fe4e3adc625c6eeaf9237558c875e411398a623cc9603aad0a9 | the same shape and topic0 as LaunchFactory.Launched: filter by emitter address to tell them apart |
| RulesLaunchFactoryV3.RulesLaunchedevent RulesLaunched(address indexed token, (bool,bool,uint16,uint16,uint32,uint16,uint32,uint16) rules, (bytes32,uint32,address,uint256,uint32,uint32,uint32,uint16,uint32,uint16,uint32,uint8,uint32,uint8,bool,uint32,bool,uint32,uint32,bool,uint32,address,uint16,uint16,uint16,uint32) extra, (uint32,uint16,bool,uint32,uint16,uint32,uint16,uint64,uint16,address,uint32) ext3, bytes custom) | 0x8814196990c3901203cbc45a6454adf6deda7fb5cc6a78ca4dea727e49600395 | the coin's hooks, as set at launch |
FeeStyleLaunchFactory (kind pool). Direct launches into a dynamic-fee pool whose hook sets each swap's LP fee.
PoolKey: currency0 = quote, currency1 = token, fee = 0x800000 (the v4 dynamic-fee flag), tickSpacing = 200, hooks = the FeeStyleHook. Read it with feeStyleFactory.poolKeyOf(token); the fee a swap pays now is feeStyleHook.quoteFee(key, params).
| Event | topic0 | Use |
|---|---|---|
| FeeStyleLaunchFactory.Launchedevent Launched(address indexed token, uint256 indexed tokenId, address indexed launcher, address quote, bytes32 poolId, int24 startTick, uint24 lpFee, uint256 supply, string metadataURI) | 0xda18b133e41a7fe4e3adc625c6eeaf9237558c875e411398a623cc9603aad0a9 | the same shape and topic0 as LaunchFactory.Launched, with lpFee = 0x800000 |
| FeeStyleLaunchFactory.FeeStyleLaunchedevent FeeStyleLaunched(address indexed token, bytes32 indexed poolId, (uint24,uint24,uint32,uint24,uint24,uint32,uint24,uint16) style) | 0x5b492c33b9824503eda545b651c3b5b6ce6836c950a2792c1f6a95fa07246016 | the fee style (base fee, sniper decay, volatility and size terms) |
CreatorFeeLaunchFactory (kind pool). Fee-style launches with creator-fee options fixed at launch: creators paid in the quote only, and/or a fee stream the current recipient can hand off. Its own locker (CreatorFeeLocker) emits the launch locker's fee events.
PoolKey: The same key as a FeeStyleLaunchFactory pool: currency0 = quote, currency1 = token, fee = 0x800000, tickSpacing = 200, hooks = the FeeStyleHook. Read it with creatorFeeFactory.poolKeyOf(token).
| Event | topic0 | Use |
|---|---|---|
| CreatorFeeLaunchFactory.Launchedevent Launched(address indexed token, uint256 indexed tokenId, address indexed launcher, address quote, bytes32 poolId, int24 startTick, uint24 lpFee, uint256 supply, string metadataURI) | 0xda18b133e41a7fe4e3adc625c6eeaf9237558c875e411398a623cc9603aad0a9 | the same shape and topic0 as LaunchFactory.Launched, with lpFee = 0x800000 |
| CreatorFeeLaunchFactory.FeeStyleLaunchedevent FeeStyleLaunched(address indexed token, bytes32 indexed poolId, (uint24,uint24,uint32,uint24,uint24,uint32,uint24,uint16) style) | 0x5b492c33b9824503eda545b651c3b5b6ce6836c950a2792c1f6a95fa07246016 | the fee style (same topic0 as FeeStyleLaunchFactory's) |
| CreatorFeeLaunchFactory.CreatorFeeOptionsevent CreatorFeeOptions(address indexed token, uint256 indexed tokenId, bool quoteOnly, bool transferable) | 0xaf2513c666eb29ade040ea060cf9c320ad858cba2070421eba7c48659f30217e | quoteOnly and transferable, fixed forever at launch |
| CreatorFeeLocker.HandedOffevent HandedOff(uint256 indexed tokenId, address indexed from, address indexed by, (address,uint16)[] recipients) | 0x13391dca3ad6cec9e09e262a5d501e6f4523162ef29608ea183df13e1913c306 | a creator recipient's future fees moved (two steps, by that recipient); recipients is the full new list |
PegLaunchFactory (kind pool). uPEG launches: every whole unit of the coin is a numbered object on an ERC-721 mirror, the supply locked 100% in a pool like a direct launch.
PoolKey: currency0 = quote, currency1 = token, tickSpacing = 200, hooks = the factory's gate. Read it with pegFactory.poolKeyOf(token).
| Event | topic0 | Use |
|---|---|---|
| PegLaunchFactory.Launchedevent Launched(address indexed token, uint256 indexed tokenId, address indexed launcher, address quote, bytes32 poolId, int24 startTick, uint24 lpFee, uint256 supply, string metadataURI) | 0xda18b133e41a7fe4e3adc625c6eeaf9237558c875e411398a623cc9603aad0a9 | the same shape and topic0 as LaunchFactory.Launched |
| PegLaunchFactory.PegLaunchedevent PegLaunched(address indexed token, address indexed mirror, uint256 objects, uint256 unit, string baseURI) | 0x1e440301214979a0c9c137b856311a367ea03f9fdc1d896ed6eb2f4382c74766 | the mirror, object count and unit |
| Trades | topic0 | Use |
|---|---|---|
| PoolManager (Uniswap v4).Swapevent Swap(bytes32 indexed id, address indexed sender, int128 amount0, int128 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick, uint24 fee) | 0x40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f | every trade on a launch pool after it opens (topic1 = poolId). Curve trades before graduation are CurveBuy / CurveSell, not Swap. |
Quote asset: the quote field of the launch event; the zero address is the chain's native coin. Amounts are raw integers in the quote's decimals; the launched token has 18. The full event catalogue, including fee and payout events, is on the Integration kit.
Terminal columns
New, Almost bonded, Completed. Curve coins have a real graduation; direct pools do not.
Curve coins (CurveFactory)
New from CurveLaunched. Almost bonded once progress reaches 80% (our suggestion; pick your own), where progress = raised / graduationThreshold and raised = getReserves().quoteReserve - phantomQuote on the curve contract (API: curve_raised / graduation_threshold). Completed on Graduated: it carries the v4 poolId, from then on trades are Swap events on that pool. After Abandoned the curve is refunding and trading is closed: drop it from the columns.
Direct pools (suggestion)
A direct, listing, hooks, fee-style or uPEG launch is a fully liquid locked pool from its first block. There is no curve and no graduation event. If your terminal needs a bonded column anyway, we suggest a market-cap milestone: Almost bonded from $28,000 FDV, Completed from $35,000 FDV (the FDV the site's standard Solana curve graduates at), New below. This is a proposal, not anything the contracts know; market cap equals FDV because the whole supply is in the pool or in wallets.
Multi-pair launches
One token, 2 to 4 pools, each with its own quote. The factory emits one Launched per pool with the same token, then MultiPairLaunched(token, poolIds). Show one launch with several pairs, and sum volume across them.
Solana
Every Solana launch is a curve: Completed when the DBC pool migrates to DAMM v2. Progress = quoteReserve / migrationThreshold on the pool account. Details in section 06.
# curve rows carry everything the column needs
curl -s "https://nasdegen.fun/api/launch/list?chain=base&sort=new&limit=200" \
| jq '.launches[] | select(.kind == "curve") | {token, graduated, refunding, curve_raised, graduation_threshold, pool_id}'# every pool of a multi-pair launch: one token, 2 to 4 pools
cast call <LaunchFactory> "poolsOf(address)" <token>
# the same from the API: one row per token, pools[] lists every pool id
curl -s "https://nasdegen.fun/api/launch/list?chain=base&sort=new&limit=50" | jq '.launches[] | {token, kind, pools: [.pools[].pool_id]}'Fees and locked liquidity
Facts a terminal can show in a launch badge.
Fee split
Every trading fee is split by contract: 30% to the protocol's FeeRouter and 70% to the creator side (the beneficiaries named at launch, or the coin's holders through a RewardPool or a FeeVault module). The locker's Paid events name the actual recipients.
Locked liquidity
On every EVM launch the position is held by an ownerless locker with no withdraw, transfer or decrease function; only fees leave it. Graduated curve positions sit in the CurveLocker under the same rule. On Solana the config locks 100% of the migrated LP permanently.
Solana
Meteora Dynamic Bonding Curve (DBC), under a nasdegen partner config.
- DBC programwhere every launch is created
dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN- DAMM v2 programwhere a curve migrates
cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG- Launch vault programrouted launches: pool creator = PDA ["launch", mint]
7wFFThJSfjDWXyWTztxfLrY5uuxAaSpGesiG1CA37oHA- Partner walletfeeClaimer and leftoverReceiver on every config
EfDn8an5ARYYwFkGjv2XrecZaPczoeiij4U8fQ9YcepP
Pre-funded partner configs
- SOL9 decimals, quote So11111111111111111111111111111111111111112
7ehAFn91xgYPgwRBiQi6TAbPgrkJKB61XkiLGq3Kv5xR- AAPLx8 decimals, quote XsbEhLAtcf6HdfpFZ5xEMdqW8nfAvcsP5bdudRLJzJp
GbUeiVP77naQzV51aCtvMDbRmJXHE4jMTr5CXEfXm7dR- AMC6 decimals, quote AMC1qwR9KhiyrQBRPrxnfo4JfMeMZqEBvt5tgTytNNoc
9k6PzCLgUuxgKyW7D6yBNwZPczpnbH75yvLSVrBLmtwn- AMD6 decimals, quote AMD8XwJXgQ9WV45Wyj9yFLejxzf2J6VM1PJY8bJEjeES
A1B99ZbGJa4iHxsCUhtWbwUXgmGWhJQFqeBU2X2HKyNG- AMDx8 decimals, quote XsXcJ6GZ9kVnjqGsjBnktRcuwMBmvKWh8S93RefZ1rF
55QiJ8VmetkuqFHATyhP1q7L1bNyddauLxYjJzjMktd5- AMZNx8 decimals, quote Xs3eBt7uRfJX8QUs4suhyU8p2M6DoUDrJyWBa8LLZsg
5G1X77gmyT62gVp3CmkAiErrebxqKc3gqbX8T9iw6fiK- ARM6 decimals, quote ARMbSB1MBRQrY6PNMao1HdQ431VafC6JRJCsGZ2Yv3iJ
2wMudRfdEW9aBpkV52mJ2djoUaomMRyFQo1CSBaJGUpV- AVGOx8 decimals, quote XsgSaSvNSqLTtFuyWPBhK9196Xb9Bbdyjj4fH3cPJGo
HEV2NJv6ZXs72tH875iwj5E6d9525a7ooAtTgYsUGvBV- BA6 decimals, quote BArimz1PcKZr8PcPh3tcZ2dg4S7FJLk3cw6R5F8GsHKg
CeSt7PkwESa9G6RcNYCYXvtvTnMTVnJEih5THX3eM6bV- BABA6 decimals, quote BABANGA4JE7Kkam4nTrALAwAVgsNJUuFJnnkF7S16BZp
2jsSCEVWJmY5UHNU1ZCmeFh2QAjPaCorcm7GBMor4Wwv- BB6 decimals, quote BBosJLw8ZzoATiEyywiifx7AgmrD2Cm3XjFWbhbRhChy
BkFARHVyfUnGYXxK5Jr6fWFjxTR7rViC8MK55LDPTqJS- BOT6 decimals, quote BoTx8y9ynfdxf5ZjWtCoBVkff52qKA82ysaLU8ZM6d8T
4Wjvmeh1REFaGa2RUpgXzdwegJoazTNUfwp4ehbAHo4q- BRK.Bx8 decimals, quote Xs6B6zawENwAbWVi7w92rjazLuAr5Az59qgWKcNb45x
3ojza6fCRLKHdCWyLgU9wY5ZJagseYyVepTFCBhZszqw- BROS6 decimals, quote BRVaZKg6J9iF2BEsdpsxJ9NyvN9PPxPZuoQUX2v8qqkk
7rp6UVRxbGKVEEGy3ikYdZka3tw7HxUgtZpPd1FHus7g- BULL6 decimals, quote BULL151gUXcFV5wXEUqu9Am2L7Qt4bTJRLRuAUjkcspC
GCpuoTMAjmmuBgF1u8nUGgbHxRmi4gon9vfj7redX84A- COINx8 decimals, quote Xs7ZdzSHLU9ftNJsii5fCeJhoRWSC32SQGzGQtePxNu
3AUiFgysyAzVdfFnhBi4qz7izdTWMvLVSSoH6p7AGCVW- COPX6 decimals, quote CzLTZppPdZtTjyq3WGpHLstoc3GLhu7zH5Zg6xUa6Gv5
5xZ5uX9fPh3Qu4ETvx6hhEpsWEKh5ZDvVqNuurDbVo5H- COST6 decimals, quote CZEB3WNZuF2Yz1z2H81RcCk8T7fsw82KB33zqamASVsg
ETmNGXBfDLNpRYPAwzMaEYEczoNYAc8PLP8AQ4v4x16X- CRCLx8 decimals, quote XsueG8BtpquVJX9LVLLEGuViXUungE6WmK5YZ3p3bd1
5YiKpChebtwkcWDzJJyPCN5vQHnGDj86qL37Hd1Ha38x- CRWV6 decimals, quote CRWVJeR2yEZuDUKYfGuKCHvLz8ywn4LGvovHfy5WiFmi
F5JY3nJ3gC2xXoxGhJTuPswgPUpvNb876jpGQkt5uwez- CYPH6 decimals, quote CYPHuMmCL1GxJWa2tsPhLKykC7GrHJTCHwbXD4g5uawK
9jtuCQUkTVw1incawhwvPuWW2nT9FLdZtkCUGNh45omt- DELL6 decimals, quote DELL2aRKQz7DMq5DrKLtkn47ZCnbxXPZXrSGbkmd13wy
HaehzbT1YwjQiDQHbBUqHHUxDmnRYjfNVmK29vpoJhtq- DFDVx8 decimals, quote Xs2yquAgsHByNzx68WJC55WHjHBvG9JsMB7CWjTLyPy
DGkdKVLWTY8EzoT52y8jAJ7HCk7fdXMGUBU2GHMdHsFq- DJT6 decimals, quote DJTu7vi8norVzdVAffgvb39VP7wjKeTsgaMBJrzfxvoF
HzMB4kMAHyvVsDRgLeYSEb5VEf1ycBFpdXditZ9LunrA- DKNG6 decimals, quote DKNGQFNGQmoBdXSRGKJ8tTu7uPDasw5JDcfMmWniNfow
EHvdAi4Nzn2RKTssRkFDzQ21J9TezBRfVhjytBZY8FHY- DNUT6 decimals, quote DNUTsCvKbKwu2RM72cUuW3TD9YpzArzACcqYQssjPLSk
66Ek5VkjUSFKhhUKracUdYMfhGCTJWBYUcRLAXvCpn2Y- DRAM6 decimals, quote DRAMjSWR7HRfJKjRkvQWYL2bcaejaVhuxEcjf4pAY4Cw
B8Hc4ab8hsD2ZTtTRJArBDtioUBqHXaggiizQSa5weHh- EWY6 decimals, quote EWY4owSJYMpwN33qGDu5gGxpkQkpMJu8ZUsQJaNZG5dv
CikZ18jhraeh8p4FUfsThnsDK4oTjbHn53d6ShnQzqYv- FLWS6 decimals, quote FLWSojG1gB5VStYR3Sb4nQFRt43UBYkqih1j2CpVLqgd
EWtawFwrHXw1SAZdYT6FL6Kca3m75zq7M4WtBZm1rzhC- FLY6 decimals, quote FLYRq3en8r2Z69gN3KyAnDrvnitEJNkwPYY7favinHeD
4v3feB6EeLa1kznKqaiZxJ8hgFXwvigVTfwtWLWPTTaJ- FWDI6 decimals, quote FWDtiB5fXHdVAewPqvHPL2dh4aBC1C6GacQbePoQXKjz
C1HpbizWjzs1K5NMcQ9jUbE3cqZkQCKFFC4Yf6FZnKJw- GLDx8 decimals, quote Xsv9hRk1z5ystj9MhnA7Lq4vjSsLwzL2nxrwmwtD3re
F8qQrVnW6JbVv9fTc2qngZkT1UujL89cDwsJRhTiSBvz- GMEx8 decimals, quote Xsf9mBktVB9BSU5kf4nHxPq5hCBJ2j2ui3ecFGxPRGc
3QuPipg9Tyhwgug3mMLCMcF6Qh5AJkPxzZQcr2gy5sPu- GOOGLx8 decimals, quote XsCPL9dNWBMvFtTmwcCA5v3xWPSMEBCszbQdiLLq6aN
6xDretBvDiqrrQ1H15AU9jF67PcSvPEJ5i29uVMewf7n- GPRO6 decimals, quote GPRR2u6NS5yBQHWGauoJ9HXgjrTH8dDsrBfTV5zAYvDH
7JeFYCksszFtt1puuh5XF5PhWKf1StAo8yBxno5gSPGo- GRND6 decimals, quote GRNDYDpqwpCm6jVxpbh4xT5AM4r3p391qYsKTHqgaET2
2athFeFh9U1cw3VNyp5WX2HZoohJyDwmmy9Em2oqMsRe- HIMS6 decimals, quote HiMSSzzwkZkrXJ4PGVJRdtfLaANeAztjjcgk5Dxe7Lwx
8zE6mTU4vE9yGtUWanwEdAxfdAoTMUxjS8UVryt4erHw- HOOD6 decimals, quote HooDYv5RewLRiMLnEVq3VJqdqxhuE6c5eYvqejMC3e9A
7jqVkk3EkeB9Ub5ajKrm7CDBm7zfQCzf61RvKLgof817- HOODx8 decimals, quote XsvNBAYkrDRNhA7wPHQfX3ZUXZyZLdnCQDfHZ56bzpg
6J3PheKzqkhfjgmmrdaXgQdcnbYaaKmjmrKAhuSiyJG7- HTZ6 decimals, quote HTZsLG4zqaNvWMwXSLHH3GG5KyJpKwpBRsKVdMG6hvzP
8xPqTxTTqz4FqTvjNkmtVn5vDwrWakXFHGH78GPtzH8n- IBM6 decimals, quote BMKdM4yUxX12moFqVk195k7coMbaybd4RUKCUdm7D1Sk
AG6FykvzS6MuFyYhydGgMCiHzXaJeAC6JZoNaisWhjUo- INTC6 decimals, quote iNTCy1qTsUEZQe3DSocLz1ZXXai34Gdw8THQh5rxFaF
8doiZF8cFn6HVhN9PwMxo4EVFBJU5kzkC6apZHrwY4EZ- INTCx8 decimals, quote XshPgPdXFRWB8tP1j82rebb2Q9rPgGX37RuqzohmArM
9CGUjGZNZbPzkHy97C7MsXXt2kDMFvDKov9pHZKMLKTe- IONQ6 decimals, quote NQ5hSuXQZrbnrwcDVk2qN73njjd3E3v3badYHnj5thF
9KndMDPnUj7quVLB5Hycqswgi8aMRD6yzD9jMC24qrg4- IREN6 decimals, quote RENzhrJQgmAnfcLhU1U5XwAMc6TC15UA6jCbPBaasnj
myvHkPZugtkeYzNpYubJiuk8b9TNYjCz7zhGSyGMJo4- JNJ6 decimals, quote JNJg1znKdF712Phe7L7z52AATAvEjEytBdN2w8Lnh1Y
ALwZFbfbC4tAbQGykLWqmzEFQ9dteyqoXUt93DjmnM28- KOx8 decimals, quote XsaBXg8dU5cPM6ehmVctMkVqoiRG2ZjMo1cyBJ3AykQ
A8TXHBkWwa4j9Y88jY6mu39jDErK9NzduBVhQTVFHSuH- LLY6 decimals, quote LLYuwZ33keFihgwoxXsBawy31AiRFLFSva32TYq5TvD
5bsdUVixUbai3eAm9owtfvviHk4cqZ1RdELtFr4J4BHB- LMT6 decimals, quote LMT3i1BHgixFqPUgcyteJhnEz2dpy9i3cYy4pi9BoeV
3sz4474VdJUygp8nVTAqbRCAR2YefBp41k9j1G5M66Z6- LULU6 decimals, quote LULUmT9VMttkfAJE236LXJcYJ2tTP7nunrSWR5G1BdS
AQotLToEtksnV7kCnbybYj1FrJMuEteqZjJFGVg61d28- LUV6 decimals, quote LUV9GB51PNZNRyzzyYK3rtqFfvDvWtRiXZ34wVq2HrX
DkoXXkkcV68DwL7Q36NsK74CgvFdQu7ZHd1FSsqki4mC- MCDx8 decimals, quote XsqE9cRRpzxcGKDXj1BJ7Xmg4GRhZoyY1KpmGSxAWT2
D3kmQn4pDUvaXpVB5cRjv8uT6bMYcGUVNycLBK3djNnv- METAx8 decimals, quote Xsa62P5mvPszXL1krVUnU5ar38bBSVcWAB6fmPCo5Zu
Fub35Nj5PCbF5QAwyTcxPAhAvHwTsESVcfrxomsjVLiW- MGM6 decimals, quote MGMuubtUEirmkhfEQdmGUh4pr7HuUdMWcZXFtpPbVJD
8L1YqrvgpStidxBsxWftYdkZs49fxrkmLxexYk7tXbWD- MRNA6 decimals, quote MRNAzXzhNcaEXJPibHEn8cd4vyekCDiivTyEwswLUCT
4833HFRRLTpaqYj8gL6911i938t6TWESVZJx1H5Au9eb- MRVL6 decimals, quote MRVLSjkR2ceUBukujaD3xCyHP1H3B2SzpsNTZF546jo
ExhHscTrtGfxmQiZzFZ5CrbNJxEgZ9QMxwnfDvYPNC32- MSFTx8 decimals, quote XspzcW1PRtgf6Wj92HCiZdjzKCyFekVD8P5Ueh3dRMX
EHtYWMhUyd98BcPgafDTk97BP6rYCnqhnPZXhCK1DjFs- MSTR6 decimals, quote MSTRdWXMeZxdE8osAQy3fA4rvTY5rgummDSMEx6U7Nz
136CYfjkSkVFoo6tgjnrryVdBxdiNtmAmcJtQesqmG3D- MSTRx8 decimals, quote XsP7xzNPvEHS1m6qfanPUGjNmdnmsLKEoNAnHjdxxyZ
BNus5twQyFPFsVeX9PCjzhUYUZexSoqUvBMRXmnt5v2m- MU6 decimals, quote MUxEsUKSMACyw5fZf68wxf5FLnZVhtU9CwH8uNNGay1
F6ihMTXZAHStZ4CRLteRiAp89JRAc2GBKynFzLbQ5gSV- NBIS6 decimals, quote NBiSF3UaVUFtRzHwAfxyHsBCAZWGEKnMpewAE4oh7BG
6VvQHDJU1gHJC2JaFqvHYACEihjCZU8S8UCBr3e8xkar- NKE6 decimals, quote NKEda5nHhNGgjrE9nDdMvaEmkmJ96qqxzBVZEcKmjSg
GqPqi31os5XXf5f7KHVFHc1FStwGXDd7L4UgVkye2zc1- NOK6 decimals, quote N7Q5fYX7YRnDQksfdBKnoUb3awm92n7QNAD35X3Rq1X
CLWiX9ES1995MHEsKcpQkju8tgkTjvA5jWf1xBKroWS- NVDAx8 decimals, quote Xsc9qvGR1efVDFGLrVsmkzv3qi45LTBjeUKSPmx9qEh
Dz3apfCkKpj1efqyARtBuDSy8d1rvkcTUhPFaaTeri98- PFE6 decimals, quote PFER6ENqP8r8NF3CqVt4mFowxsin3V5MLidBNQFCC3x
8RKjU5b3kGtwkFJHAkoLRt5A41re3DT3w7BaGWy1CT2u- PLTRx8 decimals, quote XsoBhf2ufR8fTyNSjqfU71DYGaE6Z3SUGAidpzriAA4
EAsDrnvAANuNQyL1bxmSQ2x65UqtW6UqD3iWd7PsY8bY- PTN6 decimals, quote PTNzAfFAB4LvoUQEUUGrFMyUoRLExMYjH6CcfyQfsVP
E8S8yRCrLFk9RQUtzKbYzAJHu9n4t7CLCdWDKfJhd216- QQQx8 decimals, quote Xs8S1uUs1zvS2p7iwtsG3b6fkhpvmwz4GYU3gWAmWHZ
6TDxvF6AbfSo79sCiFSvR51JBvGzELJgVF2mHm1ttvNh- QUBT6 decimals, quote QUBTAD8C9bMU9LvmMNgKPhrmBGbHvxpu6vfWQtThxxw
349SaZU59TzgGcNoLQtPrv2VaiuXevQtvkCokcSoYkDZ- RBLX6 decimals, quote RBLXDGRD64AtRamHMFVcjqne3Ar7NLWtFtYNtsrf1cE
Aw5LkR4SQCHyNNX3JfmJDLeeQf9TrqjW6z5uj8rAbueQ- RDDT6 decimals, quote RDDTGbhHwVXfyCvQMXzzowKjf5qrYBZAnehoXW83ooh
37yqc5YTeKv14YZyKR9EP2usA9exusfiEsbzNZbWSMqk- RIVN6 decimals, quote RcZmt84VMJv9bDhKqmw1uWDahYrUT468VwAChTnfD8p
B2okNmG8tcbwTv3SLfND1JdUs1ddi5aXArxKCDfx2K4y- RUM6 decimals, quote RUMsPfFZFnN1ZmGANwP7FNMJMjKH4m9RiMePrtVtLe7
ERfXv2WtQvb1ty8TJTX9R6vD3LrcHB37TH428rKzmfZg- SCHH6 decimals, quote SCHHJ3jRdSjeFEVAaLrnYdx3Brphn92Ys7z1qkiCtPX
FN9BJH59qW2W2rXyKqKLe3mKPnh68DtEgWt748Bo5QwG- SHOP6 decimals, quote SH55hfaipFAbwT42nQYhRoM5o5t61QpkmJ6p62vXB3m
AHn9BkkQZQ724EVw83MQNWncG4HCvastZJ3umYqJZenS- SKHY6 decimals, quote SKHYhSjuRWHgikq8eRKbtBbpABgJSkd7ytQV14i9EQ3
BbXZSpmz48xocM1kp75gA5HUeFazLR8DK3W9woZqkTHx- SNAP6 decimals, quote SNAPcESrvnH8yUdgeMF6xm1hym9b6hW6s8YeqeHdZFz
BSDBjwrFxM82oeV9wBP9MREGincXPiUXpuw5rpcRYsJ6- SNDK6 decimals, quote SNDKbwMUQvZhnLnxLduradgLHG5KrPuKwpnrkkGRhfH
Ay78yCwnDM75WHWToaf9Xx7ortpovHRWZ2ES5w4rYzvz- SPCX6 decimals, quote SPCXxcqXj6e5dJDVNovHN8744zkbhM2bYudU45BimGb
CpGQYMbcow7Dd5i1awDZbR2EuXhezpsgeEryqhkQAm1r- SPCXx8 decimals, quote Xs3oZwbHvqis4NYcf4YKWmEia2eC84wSiVrcYcTqpH8
AnyGYjN4PzfgjZL3VXwTJ6My5ku579HmziZdeLrKxLd7- SPHR6 decimals, quote SPHRp8cZaSQBTp1KMNP4V1X821SXhXWt4Q2yLdyHzju
J84ssxaVWmzTMocZ5gaxbzmie4unKQnxCRqSdRSQSxGW- SPYx8 decimals, quote XsoCS1TfEyfFhfvj8EtZ528L3CaKBDBRqRapnBbDF2W
FCTbM2qGiKuygXeXDtc5YSKae3Ai53whSVPENyurRyWj- SQQQ6 decimals, quote SQQQAa3gUxgnqcEsdjPA4RQNQBgB97TnG2hJhk2WaGE
D24td9UxL5sFWATYKPCfbnqZ4MwLhYs6zmgtKHSg9RTn- STRCx8 decimals, quote Xs78JED6PFZxWc2wCEPspZW9kL3Se5J7L5TChKgsidH
6imhjgtzTfTmnEUwrGdxVyfhf3SezLozHTgciURRuBfh- TQQQx8 decimals, quote XsjQP3iMAaQ3kQScQKthQpx9ALRbjKAjQtHg6TFomoc
14ngBeyZFt4mwjXhwWXQqFqByT7CeGfcfqZuYNnWyaRx- TSLAx8 decimals, quote XsDoVfqeBukxuZHWhdvWHBhgEHjGNst4MLodqsJHzoB
9DgKyzWS2uDTJRh4bsYtp8hPTjyVwh31bTF2AiPYAFyg- TSMx8 decimals, quote XsafvsGtzFqqHgTnA3aPC83EAMkacU5mcGtcSayhpVV
96ix9VkYsXxYTWfJYLn1pJqgEiMmCmyjUb6oCYZ2H7Pf- TTWO6 decimals, quote TTWofwAge91oFhZs7kpQdyrVRkmevgM88xijGvQFbKo
GER69ZiJ87VutENtm1mcYUeHZa5ZzSQ1naMZP6KKP4TT- UPS6 decimals, quote UPSqUeMHcWbkdg784XuBUEF9DtySSnW9ur5LAVdcuB9
7qsgRQtEZo8h1Z4C1Em6zbq5z5bPfk3SKhbLjC4U7qon- URA6 decimals, quote URARfsinxCRw4JpvQhuT4CxavdZXZEMjv9ZwWmWpwag
CNqwYn6sW6FapP8yRrsc8oExSu4KYreWSJxbHqwq4dsM- USO6 decimals, quote USNv3NkKA27Dh4nsHJDPhW4VoEcTQmjoZyJt2dqdwFu
9YmgwTFzARFuUqyntwJwLJhrRUwbPRYi3Gb6oGjvGEup- WEN6 decimals, quote WENAZ2WyPbmgvUcKfQ8hyMDfBQP9bZ65hsZ5KTFrRGZ
CMAKHkYchgDKoGhEAj1cU3BPuYTKc2FX6vkzDmnJpVJK- WULF6 decimals, quote WULFeyfrj1VJKD9HhRTcW8R4g5HefUA11HDEdBv2WxD
DgX9qaxVmu4LnsaAMazxwZtqNuM5qeC4Gvi5nfVq4WV- ZEC8 decimals, quote A7bdiYdS5GjqGFtxf17ppRHtDKPkkRqbKtR27dxvQXaS
E25nGnQeRSE1eXvQmnF1DXAHeJXFvX67hEmUV3qvHqzH
Recognise a launch. A DBC pool is a nasdegen.fun launch when its config account names the partner wallet as feeClaimer (and as leftoverReceiver). The configs listed here are the pre-funded ones; a coin paired with any other quote gets its own config, created by the launcher at launch time with the same partner wallet, so match on the config's feeClaimer rather than on this list alone.
Creator. The pool's creator field is the launcher's wallet, or, for a launch routed through the launch vault program, that program's PDA ["launch", mint]. In both cases the launcher is the fee payer of the launch transaction.
Graduation. When a curve reaches its migration threshold the pool migrates to a Meteora DAMM v2 pool (the config's migration option is MET_DAMM_V2) and the LP is permanently locked. Progress = quoteReserve / migrationThreshold from the DBC pool account. The "Hooks forever" curve size is built never to graduate: keep it in its curve column.
Fees. Of the trading fee left after Meteora's own share, the creator side gets 70% and the partner 30%, the same split as on the EVM chains.
Metadata. The mint's Metaplex uri points at /api/launch/solana/meta/<mint> on this site (name, symbol, description, image, external_url, website, twitter, telegram, tweet, extensions).
Finality and reorgs
What the site itself does, so your numbers can match ours.
EVM
The site's own indexer stays 10 blocks behind the head (never fewer than 3) and re-checks the block hashes it has stored; a block whose hash changed is dropped and its launches rebuilt from the canonical chain. Show head-of-chain launches if you want speed, but key them by (chain, token) and be ready to drop them when their block is replaced.
Solana
The site's Solana reader (solana/trades.mjs) reads signatures and transactions at finalized, about 13 s behind confirmed, after an audit found confirmed trades that were later forked out. Use confirmed for a fast first display if you like, and finalized for anything that ranks, pays or is stored for good. A signature missing from finalized history (getSignatureStatuses with searchTransactionHistory) is dropped.
Metadata and public APIs
Off-chain, on this domain, no API key.
EVM: the metadataURI in Launched, CurveLaunched and Listed is https://nasdegen.fun/api/launch/meta/<launcher>/<key>; /api/launch/meta/<token>?chain= answers the same JSON by token address. Solana: the mint's uri is https://nasdegen.fun/api/launch/solana/meta/<mint>. EVM fields: name, symbol, description, image, external_url, x; Solana answers the Metaplex shape (name, symbol, description, image, external_url). Logos uploaded here are 512 x 512 WebP files at an immutable URL; list and feed rows carry the same image_url. The creator can edit metadata, so cache it for minutes, not forever.
/api/launch/list90 requests per minute per IP, then 429.
cache: public, s-maxage=2, stale-while-revalidate=10/api/launch/live120 requests per minute per IP, then 429.
cache: public, s-maxage=2, stale-while-revalidate=10/api/launch/search60 requests per minute per IP, then 429.
cache: public, s-maxage=5, stale-while-revalidate=30/api/launch/candles60 requests per minute per IP, then 429.
cache: public, s-maxage=5, stale-while-revalidate=30/api/launch/feedNo per-IP limit. Cache as the header says.
cache: public, s-maxage=2, stale-while-revalidate=10/api/launch/meta/{token}No per-IP limit. Cache as the header says.
cache: public, max-age=300/api/launch/solana/meta/{mint}No per-IP limit. Cache as the header says.
cache: public, max-age=300/api/stream6 requests per minute per IP, then 429.
cache: no-store (opens per minute; one connection lasts about 290 s)/api/integrate/kit.jsonNo per-IP limit. Cache as the header says.
cache: public, s-maxage=60, stale-while-revalidate=300Unknown query parameters on the cached endpoints are refused with 400. When the database is busy a read answers 503 with retry-after: keep your last data and retry. For anything real-time use the stream instead of polling. Every endpoint, with parameters: /api/openapi.json.
Tag us
A request, if your terminal shows launchpads.
If you label launches by launchpad, we would ask that launches from the sources above show nasdegen.fun, with our logo (/brand/mark-512.png, or /brand/mark.svg) and a link to https://nasdegen.fun. If you show a one-line description, ours is "the most customizable launchpad". More logo sizes are on the Integration kit.
Questions, corrections or a missing field: tell us.@nasdegen on X