Skip to main content
Check out the x402 Ad Marketplace (UI)

x402 Ad Marketplace

Buy advertising space on 100+ crypto content sites using USDC with zero gas fees thanks to x402 gasless payments.

No Gas Fees

Pay only the ad price - zero transaction fees

Instant Booking

One signature and you’re live

100+ Sites

Choose from crypto news, DeFi, NFT sites

AI-Powered Content

Submit articles with AI validation and generation

Real Analytics

See traffic data before you buy

Track Everything

Monitor your ads and article requests in real-time

Quick Start

  • Display Ads
  • Article Submissions
1

Connect Wallet

Visit x402 Ad Marketplace and connect your wallet on Base network
2

Browse Sites

Explore sites with traffic stats, pick your target audience
3

Choose Format & Time

Select ad format (Banner/Sidebar/Leaderboard) and time slot
4

Upload Ad

Provide image URL and landing page
5

Sign & Pay

One signature with USDC - zero gas fees - instant confirmation
Need USDC on Base? Bridge from Ethereum using Base Bridge

Ad Formats & Pricing

  • Wide banner
  • Leaderboard
970×250 pixels - Wide banner formatPrice: 1 USDC/hourBest for cost-effective campaigns with good visibility
Duration: 1 hour minimum, 7 days (168 hours) maximum

Article Submissions

Submit article ideas to crypto content sites. AI validates your topic and generates optimized titles and descriptions.

How It Works

1

Submit Topic or Tweet

Provide a tweet URL, topic idea, or complete article title
2

AI Validation (Free)

AI scores your content (0-100) and generates suggestions if needed
3

Get Approval

  • Score ≥80: Your input is perfect, accepted as-is
  • Score 70-79: Approved with AI-improved suggestions
  • Score <70: Rejected - try a different topic
4

Submit & Pay

One x402 signature to submit your article request
5

Publication

Site publishes your article and you receive the live URL

Pricing

Prices vary by site, typically $3-50 USDC per article. Each site sets their own rate based on traffic and audience.
Validation is free! You can validate as many ideas as you want before committing to payment.

API Reference

Network & Payment Details

Network
Base
Chain ID: 8453
Payment Token
USDC
6 decimals
Protocol
x402
ERC-20 Permit signatures
Max Price
$1000
Maximum price per booking

Purchase Ad Slot (x402 Payment)

POST https://x402.anyspend.com/ads/buy
Programmatically purchase ad slots using x402 gasless payments. This endpoint requires x402 payment authorization. Request Body:
{
  "productId": "slot_abc123",
  "buyerAddress": "0x742d35Cc6...",
  "startTime": "2025-01-15T14:00:00Z",
  "endTime": "2025-01-15T18:00:00Z",
  "adContent": {
    "imageUrl": "https://...",
    "linkUrl": "https://...",
    "altText": "Alt text",
    "title": "Ad title",
    "description": "Description"
  }
}
Parameters:
  • productId (required) - The ad slot ID from /ads/slots
  • buyerAddress (required) - Your wallet address
  • startTime (required) - Start time in ISO 8601 format
  • endTime (required) - End time in ISO 8601 format
  • adContent.imageUrl (required) - Direct URL to ad image
  • adContent.linkUrl (required) - Landing page URL
  • adContent.altText (required) - Image alt text
  • adContent.title (optional) - Ad title
  • adContent.description (optional) - Ad description
JavaScript/TypeScript Example:
import { wrapFetchWithPayment } from '@b3dotfun/anyspend-x402-fetch';
import { createWalletClient, custom, publicActions } from 'viem';
import { base } from 'viem/chains';

// Create wallet client
const walletClient = createWalletClient({
  account: '0x742d35Cc6...',
  chain: base,
  transport: custom(window.ethereum),
}).extend(publicActions);

// Wrap fetch with x402 payment
const fetchWithPayment = wrapFetchWithPayment(
  fetch,
  walletClient,
  BigInt(1000 * 10 ** 6) // Max 1000 USDC
);

// Purchase ad slot
const response = await fetchWithPayment(
  'https://x402.anyspend.com/ads/buy',
  {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      productId: 'slot_abc123',
      buyerAddress: '0x742d35Cc6...',
      startTime: '2025-01-15T14:00:00Z',
      endTime: '2025-01-15T18:00:00Z',
      adContent: {
        imageUrl: 'https://example.com/ad.jpg',
        linkUrl: 'https://example.com',
        altText: 'My ad',
        title: 'Check out our product!',
        description: 'Limited offer'
      }
    })
  }
);

const result = await response.json();
console.log('Booking ID:', result.data.bookingId);
See x402 SDK documentation for more details on using wrapFetchWithPayment.

Browse Sites (Free)

GET https://x402.anyspend.com/ads/sites
List all available sites with pagination. This endpoint is free to call. Query parameters:
  • page - Page number (default: 1)
  • limit - Results per page (default: 20, max: 100)
  • search - Search by name/domain/keywords
curl "https://x402.anyspend.com/ads/sites?search=defi&limit=10"

List All Slots (Free)

GET https://x402.anyspend.com/ads/slots
List all available ad slots across all sites. This endpoint is free to call.
curl "https://x402.anyspend.com/ads/slots"

Get Slot Details (Free)

GET https://x402.anyspend.com/ads/slots/:slotId
Returns static slot information including pricing, format, and associated site details. This endpoint is free to call.
curl "https://x402.anyspend.com/ads/slots/slot_banner_abc123"

Check Current Ad (Free)

GET https://x402.anyspend.com/ads/slots/:slotId/current-ad
Returns the ad currently running in this slot, or indicates if the slot is available. This endpoint is free to call.
curl "https://x402.anyspend.com/ads/slots/slot_banner_abc123/current-ad"

View Your Campaigns (Free)

GET https://x402.anyspend.com/ads/bookings/buyer/:address
Track all your ad bookings - active, pending, and completed. This endpoint is free to call.
curl "https://x402.anyspend.com/ads/bookings/buyer/0xYourAddress"
Status values:
  • active - Currently running
  • pending - Scheduled for future
  • completed - Campaign ended
Prices in API responses are in USDC wei (6 decimals). Divide by 1,000,000 to get USDC amount.

Article Submission Endpoints

Validate Article Idea (Free)

POST https://x402.anyspend.com/articles/validate
Validate an article idea and get AI-generated title and description. This endpoint is free to call - no payment required. Request Body:
{
  "siteDomain": "baseradar.com",
  "userInput": "How to Use Base Pay for Creators in Your DApp"
}
Parameters:
  • siteDomain (required) - Target site domain (e.g., “baseradar.com”, “solanaecho.com”)
  • userInput (required) - Can be:
    • Complete article title (10-200 characters)
    • Tweet URL (e.g., “https://x.com/username/status/…”)
    • Topic or idea (e.g., “base pay for creators”)
AI Scoring:
  • Score ≥80: Your input is perfect! Used as-is
  • Score 70-79: Good content, AI provides improved suggestions
  • Score <70: Rejected - topic doesn’t fit the site
JavaScript Example:
const response = await fetch('https://x402.anyspend.com/articles/validate', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    siteDomain: 'baseradar.com',
    userInput: 'How to bridge assets to Base chain'
  })
});

const result = await response.json();
console.log('Approved:', result.data.approved);
console.log('Score:', result.data.score);
console.log('Title:', result.data.suggestedTitle);

Submit Article Request (x402 Payment)

POST https://x402.anyspend.com/articles/buy
Submit an article request with x402 gasless payment. Requires prior validation approval. Request Body:
{
  "buyerAddress": "0x742d35Cc6...",
  "siteDomain": "baseradar.com",
  "title": "How to Use Base Pay for Creators in Your DApp",
  "description": "Learn how to integrate Base Pay into your decentralized application..."
}
Parameters:
  • buyerAddress (required) - Your wallet address
  • siteDomain (required) - Target site domain
  • title (required) - Article title (10-200 characters)
  • description (required) - Article description/summary
JavaScript/TypeScript Example:
import { wrapFetchWithPayment } from '@b3dotfun/anyspend-x402-fetch';
import { createWalletClient, custom, publicActions } from 'viem';
import { base } from 'viem/chains';

// Create wallet client
const walletClient = createWalletClient({
  account: '0x742d35Cc6...',
  chain: base,
  transport: custom(window.ethereum),
}).extend(publicActions);

// Wrap fetch with x402 payment
const fetchWithPayment = wrapFetchWithPayment(
  fetch,
  walletClient,
  BigInt(1000 * 10 ** 6) // Max 1000 USDC
);

// Submit article request
const response = await fetchWithPayment(
  'https://x402.anyspend.com/articles/buy',
  {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      buyerAddress: '0x742d35Cc6...',
      siteDomain: 'baseradar.com',
      title: 'How to Use Base Pay for Creators in Your DApp',
      description: 'Learn how to integrate Base Pay into your decentralized application for seamless creator payments.'
    })
  }
);

const result = await response.json();
console.log('Request ID:', result.data.requestId);

View Your Article Requests (Free)

GET https://x402.anyspend.com/articles/requests/buyer/:address
Track all your article requests - pending, in progress, and published. This endpoint is free to call.
curl "https://x402.anyspend.com/articles/requests/buyer/0xYourAddress"
Status values:
  • pending - Waiting for site to write article
  • in_progress - Article is being written
  • published - Article is live (includes publishedUrl)
  • rejected - Article request was declined

Zero Gas with x402

x402 is the payment protocol that makes crypto payments feel like web2. Traditional crypto payments:
  • ❌ Multiple transactions (approve + transfer)
  • ❌ $5-15 in gas fees
  • ❌ 30-60 second wait times
  • ❌ Complex multi-step flows
With x402:
  • ✅ One signature - no transactions
  • ✅ Zero gas fees
  • ✅ Instant settlement
  • ✅ Simple one-click purchase

How It Works

  1. You sign a payment authorization message (not a transaction)
  2. x402 facilitator submits the transaction for you
  3. Facilitator pays the gas
  4. You pay only the ad price
Always verify the amount and recipient before signing!

Security

  • ✅ You control the signature
  • ✅ Signatures expire (can’t be replayed)
  • ✅ One-time use with unique nonce
  • ✅ Amount is locked (can’t charge more)

Tips for Success

  • Use high contrast colors
  • Keep text large and readable
  • Include a clear call-to-action
  • Test image URL before booking
  • Match sites to your target market
  • Check traffic stats before booking
  • Consider multiple smaller sites vs one large site
Use UTM parameters in your landing page URL:
https://yoursite.com?utm_source=sitename&utm_medium=banner
  • Book 1-2 hours first to test
  • Monitor click-through rates
  • Scale up what works
  • Keep titles between 10-200 characters
  • Be specific and descriptive
  • Match the site’s content focus
  • Use keywords relevant to the site’s audience
  • If you have a great title, submit it directly (10+ chars)
  • Research the site before submitting
  • Check recent articles for tone and topics
  • Tweet URLs work great - AI extracts context
  • Validate multiple ideas before paying
  • Score ≥70 required for approval
  • If score is 70-89, review AI improvements
  • AI optimizes for SEO and engagement
  • Suggested descriptions enhance your submission
  • Use validation to refine your pitch

Common Issues

You need USDC on Base network. Check that:
  • You’re connected to Base (Chain ID: 8453)
  • You have enough USDC for the total cost
Someone just booked that slot. Refresh and choose a different time.
Currently, bookings cannot be cancelled or refunded. Make sure your ad is ready before booking.
No, ad content is locked at booking time. You’ll need to make a new booking to change it.

Launch Your Campaign

Start advertising on crypto sites in 5 minutes

Related: Article Submission Marketplacex402 Overviewx402scan →