How to Create your own NFT Marketplace on OpenSea in Three Minutes or Less

Note: This post is out of date. You can now create an NFT Marketplace without paying gas to mint tokens. Updated instructions are here:

It might sound ludicrous, but if you’ve already launched an ERC 721 compliant NFT, it’s easy to meet or beat this timeline. Seriously! If you’ve already minted some tokens and you’re looking to start generating revenue from the secondary market right away, skip down to the “Speed Run” section.

For those with more time, less development progress, or greater flexibility needs, read on here. OpenSea offers a variety of solutions, each tailored to the needs of different types of creators. And note that what you read here largely applies to developing on Rinkeby, so if you’re just experimenting, we’ve still got you covered! In fact, if you’re just getting started, we’ve got a video tutorial for you.

Create a Contract, Mint Tokens, and List Them for Sale, All in One Place

OpenSea’s Storefront Manager allows you to create a contract and an OpenSea Storefront, all without a single line of code. All you need is some content, a wallet, and a little bit of ETH to pay for gas. There’s no fee beyond what the Ethereum network charges. Street artist Pascal Boyart used the Storefront manager to tokenize a mural. It later sold for 25 ETH!

Here’s how to make your own storefront:

1. Click “Create”

Note: If you already have a token contract set up and you just want to set up a space on OpenSea to sell them, use our get-listed flow instead. See the “OpenSea Storefront” section below for the details.

2. Fill in your information

3. Confirm the transaction creating your contract, wait for the blockchain, then sign the message confirming your address

Gas prices can swing from just a couple GWEI all the way up to the high double digits over the course of just a few hours, but they usually drop with the same speed. If you don’t feel great about paying over $10 to create a contract, consider checking back in a few hours. There’s a good chance that you’ll find quicker confirmation times at lower gas prices.

4. Click on your newly created storefront

You’ve now created a contract, so the most expensive transaction is behind you. But a token contract isn’t much good without some tokens on it, so let’s move on to the next step.

5. Click “Create” and fill in your information

6. Click “Submit,” confirm your transaction, then wait on the blockchain

You wait time will be shorter if you pay a higher gas price. You can click “Edit” in the MetaMask popup to trade time for money. Just make sure that you use at least the “SAFE LOW” gas price suggested by ETH Gas Station or you run the risk of clogging up your account with a stuck transaction.

7. List your token for sale

When your minting transaction is mined, you’ll see a success notification. And that’s it! Now you can list your token for sale on OpenSea just like any other digital asset. I’m willing to bet that your project will be more interesting than mine, so come tell me about it in Discord. And feel free to DM me with questions. I’m always happy to chat!

OpenSea Storefront

Achieving “Minimum Viable Storefront” for your existing NFT project using OpenSea is no great ordeal. Projects as successful as CryptoAssault have used the OpenSea Storefront as their exclusive marketplace. We even provide documentation and examples for setting up a token contract in the first place, if you’re early on in your development. Here’s how to create an OpenSea Storefront:

1. Launch an ERC 721 compliant token contract

To function optimally on OpenSea, your contract needs to comply with the ERC 721 standards. Of particular importance to getting smoothly set up are adherence to the metadata standard and the implementation of Ownable. See the section in our docs about adding metadata for more information on this.

We access information about a token’s image, name, description, and more from its metadata, so it’s important to get it right. You can also validate your metadata using a dedicated URL.

By default, the contract’s Ownable owner has access to the contract’s storefront editor page. When your wallet is using the owner’s address, you’ll be able to use the storefront editor without any additional efforts.

But don’t worry if your contract is noncompliant in either of these ways. We’ve got a playbook for that kind of thing and we’ll likely be able to set you up manually. Check out the “Handling Common Issues” section below.

2. Get listed on OpenSea

To make OpenSea aware of your contract, go to our “get listed” page and follow the prompts. First, select the appropriate network. If your contract’s on mainnet, choose mainnet. If it’s on Rinkeby, choose Rinkeby. If it’s on a different testnet, please redeploy to a supported network.

Then, enter your contract’s address into the input field and click “Submit.” You’ll be redirected to a page that tracks our progress as we process the tokens in your contract. When that process is finished, you’ll be taken to your contract’s category page. For reference, an asset’s category page is accessible at a URL like this:<CONTRACT_NAME>.

3. Access your storefront editor

Access your storefront editor page by clicking the “••• More” button in the top right corner of the category page, then selecting “Edit Storefront.” The “••• More” button is also accessible in the top right area of:<CONTRACT_NAME>

If you want to access the storefront editor directly, navigate to:<CONTRACT_NAME>/edit.

If you don’t see the “Edit Storefront” button in the dropdown or if you can’t access the storefront editor by navigating to its URL directly, double check that you’re using the address of contract’s Ownable owner. If your contract doesn’t implement <span id="code" class="pink-text" style="color: #e83e8c;" fs-test-element="code">Ownable</span>, check out “Handling Common Issues” below.

4. Edit your storefront

The storefront editor allows you to configure various aspects of your users’ experience on OpenSea. You can:

  • Add a storefront avatar that will be used in the sidebar and as a placeholder for tokens without images
  • Change the name of your storefront (for example, Crypt-Oink changed their storefront name from Crypton, the name of their assets, to Crypt-Oink, the name of the project)
  • Add a brief description of your project and a link to your site, both of which will be included on all the asset detail pages for your tokens
  • Tweak the display style of your token images

You can also specify a developer fee on secondary sales and a payout address. When one of your items sells on OpenSea, you’ll receive a percentage of the sale price. Most developers choose to set no fee in order to promote sales and generate awareness for their project. But the developers who decide to implement a fee typically impose a 2.5% fee on sellers. No one’s imposing a fee on buyers currently, but it’s an option (though one that users might find a little jarring).

5. Share the good news

Once you’ve got all your assets loaded and your storefront configured, you’re done! Spread the word on social media and be sure to tweet at us. If you’re wondering why your project’s not appearing in the sidebar or in search results, see “Handling Common Issues” below.

Embedded Marketplace

Want to add an embedded marketplace to your website? First, follow the steps in the “OpenSea Storefront” section above. Once your storefront is up and running, it’s trivial to embed it on your site. Find the “••• More” button on:<CONTRACT_NAME>

Then select “Embed This Page.” Just copy and paste the snippet of code from the modal into your site, and you’re set! If you’re not familiar with HTML or if you’re not sure how to access the code that generates your site, ping us on Discord. We’re always happy to chat.

Custom Marketplace

Maybe you’re looking for more UI and UX flexibility than the embedded marketplace affords. We offer an SDK that allows you to create a marketplace using OpenSea’s infrastructure and building blocks, but with your layouts and design layered over the top. It’ll take more than three minutes, but the results will be well worth it.

It all starts with creating an OpenSeaPort instance:

this.seaport = new OpenSeaPort(web3Provider, {  networkName: Network.Main})

Once you got a seaport initialized, allowing your sellers to create listings is straightforward:

const expirationTime = ( / 1000 + 60 * 60 * 24)const auction = await seaport.createSellOrder({ tokenId, tokenAddress, accountAddress, startAmount, endAmount, expirationTime })

And allowing your buyers to snap them up is even easier:

const order = await seaport.api.getOrder({ side: OrderSide.Sell, … })const accountAddress = “0x…” // The buyer’s wallet addressawait this.props.seaport.fulfillOrder({ order, accountAddress })

If you’re comfortable with those code snippets, then you’ve got enough to get started. But that’s just the tip of the iceberg! Using our SDK, you can also enable offers, English auctions, bundling, bulk transfers, private listings, and more. You’ll also be able to sell items for your own ERC 20, get a cut of the action (on top of your dev fee), and even run a crowdsale.

Peruse our full documentation on GitHub. Skim our example app, the Ship’s Log, for reference. And get inspired about the power of our SDK on Footbattle’s website. Their marketplace is built with our tooling!

And if you get hung up at any point, drop by our Discord server and let us know about it. We almost always respond within a few hours and usually, it’s within a few minutes. Little in this world brings us more satisfaction than learning about new projects using our tools. Even if you’re just considering it as a possibility, we’d be happy to chat with you about how we can help.


OpenSea also offers a white-label solution. If you own AAA IP that you think would match up well with the blockchain ecosystem, if you’ve got a successful game and you’re looking for a marketplace on a custom domain, or if you’re running your own blockchain and looking to spin up an instance of OpenSea on it to enable smooth, sophisticated exchange, send us an email at We’d love to talk about the costs and benefits of an OpenSea white-label marketplace.

If a readymade, customizable marketplace with your brand on it sounds appealing, but your project is just getting started, then follow us on Twitter or Medium for more news. We’re developing a quick, cheap, self-serve marketplace creator that will bring some of the power and convenience of Stripe to the world of crypto.

Why We’re Excited

We feel confident in saying that OpenSea provides a valuable service to the space: we build a crisp, safe, open marketplace so that dapp developers can invest their time in creating mesmerizing, addictive, innovative projects. For the first time, developers can deploy a digital asset and instantaneously give users a liquid marketplace for their items. We like to think that we add a little extra flow to the rising tide that’s lifting the NFT ship.

What else would you like to see in a marketplace? What other needs do you think we could meet? What tools would help you build a better experience for your users? Let us know on Discord, message us on reddit, or tweet at us. Developer input is priceless and we’re always happy to chat!

To stay up to date on all things OpenSea, sign up for our newsletter or follow us on Medium.

Appendix A: Handling Common Issues

Sometimes, issues crop up that can’t be solved by reading the docs or the FAQ. And sometimes you just don’t have time for that nonsense. Anyway, here’s some information on diagnosing and fixing the most common issues, just in case:

1. I can’t access the storefront editor

By default, the storefront editor page (<CONTRACT_NAME>/edit) is accessible to the contract’s Ownable owner. If your contract doesn’t implement <span id="code" class="pink-text" style="color: #e83e8c;" fs-test-element="code">Ownable</span>, or if it does but the owner address is not accessible (maybe it’s living exclusively on a server), or if it’s just not working, we can fix that manually. Send an email to introducing yourself, providing the contract address, and providing the address that you’d like authorized to edit the storefront. We’ll confirm your ownership, then make the authorization.

2. My contract’s not accessible in the sidebar or the search bar

That’s the default state of all new contracts on OpenSea. We employ a concept that we call whitelisting. When a dapp gets whitelisted, it appears in the sidebar and becomes searchable in the main search bar.

Whitelisting is discretionary, but we use a few key metrics to inform the decision: the project’s community engagement on Discord and Telegram, historical volume of sales on OpenSea, the project’s reach on Twitter and other social media, the novelty of the tech, and the pace of development, among others. If you put together a brief report on your project, focusing on the metrics enumerated above, and send it to we’d be happy to review it.

3. I re-deployed my contract and now the names are all messed up

When you add the new contract with the same name as your previous contract, it will automatically have a new storefront with “V2” after the name (or “V3”, “V4”, etc.).

To update your smart contract, go to the storefront editor for each contract, rename the old contract to “ContractNameOld,” and rename the new contract to “ContractName.”

After you’ve updated your contract, you might want to get rid of the old one. We don’t have an interface for deleting old smart contracts from OpenSea, so you’ll need to contact us on Discord. We’ll be sure to get it done as soon as possible!

4. My metadata isn’t displaying properly

We’ve noticed that this issue usually owes its origin to a few different causes:

The metadata isn’t available through <span id="code" class="pink-text" style="color: #e83e8c;" fs-test-element="code">tokenURI</span>, but we have an API that you could hit.

Great! That works for us. Send an email to with your contract address and your base API URL. We’ll need to be able to feed it a token ID and get back a JSON formatted according to the specifications in our docs.

The metadata is available through <span id="code" class="pink-text" style="color: #e83e8c;" fs-test-element="code">tokenURI</span>, but doesn’t appear at all on OpenSea.

This is can get a little trickier. If the links returned by <span id="code" class="pink-text" style="color: #e83e8c;" fs-test-element="code">tokenURI</span> don’t 403 and the JSONs that they point to pass muster on a JSON validator, then ask the following questions: Is my contract compliant with ERC 721, including its metadata standard? Does my token’s image link work? Am I using exclusively permitted <span id="code" class="pink-text" style="color: #e83e8c;" fs-test-element="code">display_type</span> options? Do my attributes with a <span id="code" class="pink-text" style="color: #e83e8c;" fs-test-element="code">display_type</span> of “number” have numbers for their values and not strings?

If you can answer “yes” to all of those questions and the metadata still won’t turn up, please contact us on Discord, because we’ve got a true mystery on our hands. We love solving mysteries.

The metadata is served through IPFS and appears unreliably.

We find that sometimes IPFS links can be a little finicky. If the metadata shows up for some of your contract’s assets, but not all of them, please contact us on Discordand we’ll run a remedial script.

Appendix B, The Speed Run: Setting up an OpenSea Storefront in Three Minutes or Less

Do you already have an ERC 721 compliant contract? Have you already minted some tokens? Do you have a compliant metadata API that’s accessible through your <span id="code" class="pink-text" style="color: #e83e8c;" fs-test-element="code">tokenURI</span> function? Does your contract implement <span id="code" class="pink-text" style="color: #e83e8c;" fs-test-element="code">Ownable</span>? If you can answer all those questions affirmatively, then you can get set up on OpenSea in the time it takes to make a bag of popcorn. Set the power to “high,” listen for 1–2 seconds between pops, and follow these steps:

1. Find one of your tokens on OpenSea

First, go to Then append <span id="code" class="pink-text" style="color: #e83e8c;" fs-test-element="code">/YOUR_CONTRACT_ADDRESS/LOWEST_TOKEN_ID</span> onto the URL. This will take you to the asset’s detail page and if OpenSea was previously unaware of your contract, it’ll have the side effect of adding it to our system.

2. Click the grey contract name below the token’s name

This will take you to the contract’s main page. Eventually, you’ll be able to see all your tokens here. But don’t get distracted! We’ve got a deadline, after all.

3. Access the storefront editor

To access the storefront editor, Click the “••• More” button in the top right of the screen, then select “Edit Storefront.” This option is only available by default to the Ownable owner of the contract. If you don’t see it, just ping us on Discord or send an email to with your contract address and the address you’d like to authorize as an editor.

4. Set a developer fee

The storefront editor page is full of enticing options, but we’re trying to set records here, so stay focused! Skip past all the other fields, and go straight to “Add your seller fee (%).” Most developers that choose to set a fee go with 2.5%, but you can choose whatever you think will be best for your project.

Then, paste your ETH address into the field labeled “Your payout address.” Finally, click “Save” and record your time. That’s it! Congratulations, you’ve set up a storefront on OpenSea.

I made it through these steps at a leisurely pace in just over two minutes on an ornery local instance. Tweet your time at us if you can beat my record, then check out the “OpenSea Storefront” section above to finish your storefront setup.

Text LinkText Link
Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.