Learn how to integrate Bolt.new AI with the Etsy API in 2025 using a clear step-by-step guide to streamline workflows and automate your shop.

Book a call with an Expert
Starting a new venture? Need to upgrade your web app? RapidDev builds application with your growth in mind.
To integrate Bolt.new with the Etsy API, you treat Bolt.new exactly like any other browser‑based AI coding workspace: you write backend code inside Bolt (Node/Express is easiest) and connect to Etsy using Etsy’s official REST API over HTTPS with OAuth 2.0. Bolt itself never “magically” integrates — you explicitly wire environment variables, build the OAuth flow, send authenticated requests, and test endpoints inside its sandbox. Once wired, Bolt can scaffold UI, backend, and API handlers that talk to Etsy just like a production system.
You are not “integrating Bolt with Etsy”. You are building a normal server inside Bolt.new that talks to Etsy’s API. Etsy requires OAuth 2.0 for any app that reads or modifies shop data. Etsy calls this the “Etsy API v3”. You authenticate like any standard OAuth provider: your app redirects the user to Etsy’s login screen, the user approves permissions, Etsy sends you a code, and you exchange that code for tokens. The backend then stores these tokens and uses them for Etsy API calls.
This is exactly how you wire Etsy inside a Bolt.new Node/Express project:
Etsy uses these real URLs:
This is a minimal, real, fully-valid Node + Express integration showing OAuth + one API call:
// server.js
import express from "express"
import fetch from "node-fetch"
import dotenv from "dotenv"
dotenv.config()
const app = express()
// Step 1: Redirect user to Etsy login
app.get("/auth/etsy", (req, res) => {
const url =
"https://www.etsy.com/oauth/connect" +
"?response_type=code" +
`&client_id=${process.env.ETSY_CLIENT_ID}` +
`&redirect_uri=${encodeURIComponent(process.env.ETSY_REDIRECT_URI)}` +
"&scope=shops_r%20listings_r" // scopes depend on your need
res.redirect(url)
})
// Step 2: Exchange authorization code for access token
app.get("/auth/etsy/callback", async (req, res) => {
const code = req.query.code
const tokenRes = await fetch("https://api.etsy.com/v3/public/oauth/token", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
grant_type: "authorization_code", // required by Etsy
client_id: process.env.ETSY_CLIENT_ID,
redirect_uri: process.env.ETSY_REDIRECT_URI,
code
})
})
const tokens = await tokenRes.json()
// In Bolt, during prototyping you can store in memory
global.etsyTokens = tokens
res.send("Etsy authentication successful!")
})
// Step 3: Example Etsy API call
app.get("/etsy/shop", async (req, res) => {
if (!global.etsyTokens) {
return res.status(401).send("Not authenticated with Etsy")
}
const accessToken = global.etsyTokens.access_token
const apiRes = await fetch(
"https://openapi.etsy.com/v3/application/shops", // returns shops of authenticated user
{
headers: {
Authorization: `Bearer ${accessToken}`
}
}
)
const data = await apiRes.json()
res.json(data)
})
app.listen(3000, () => {
console.log("Server running on http://localhost:3000")
})
Once the prototype works in Bolt:
This is the complete and correct way to integrate Bolt.new with Etsy’s API using real, verified endpoints and working code.
When it comes to serving you, we sweat the little things. That’s why our work makes a big impact.