For publishers
Put your traffic to work
You run an Australian local-services site. Your visitors are asking for quotes; someone should be paying you for that. Add a NearMe Ads slot, we fill it with the highest-bidding provider for that vertical and area, and you earn a share of every lead your site produces.
We pay on leads, not clicks or impressions. One real enquiry is worth more than a thousand banner views, and your share is a cut of the actual lead fee, not a fraction of a cent CPM.
Your revenue share is set per site in basis points (for example 3000 bps = 30 percent of the lead fee) and recorded against every individual lead row, so payouts reconcile to the cent.
The embed renders self-contained cards with inline styles, labels every unit Sponsored, and fails silent if the API is unreachable. Your page never blocks on us.
1. Quick install (any site)
One script tag plus a slot div. The script finds every data-nearme-slot element, fetches ads, renders sponsored cards, and reports impressions and clicks.
<script async src="https://nearme-ads.vercel.app/embed.js" data-site="YOUR_SITE_KEY"></script>
<div data-nearme-slot="blog-inline"
data-vertical="skip-bins"
data-suburb="Salisbury"
data-limit="2"></div>Your site key is issued when you join. Placement keys: blog-inline, sidebar, search-results, footer.
2. Server-side integration (Next.js preferred)
Fetch the serve endpoint server-side with next: { revalidate: 300 }, render your own card component, then POST click events from the client. Label every unit "Sponsored".
GET /api/v1/serve?site=cheapskips&placement=sidebar&vertical=skip-bins&suburb=Salisbury&limit=2
{
"ok": true,
"ads": [
{
"campaign_id": "uuid",
"creative": {
"type": "provider-card",
"headline": "Same day skip bins, Salisbury",
"body": "All sizes, best local rates.",
"cta": "Get a quote",
"url": "https://example.com.au",
"phone": "0400 000 000",
"badge": "Local"
},
"provider": { "name": "...", "phone": "...", "website": "..." }
}
]
}3. API reference
GET /api/v1/serve
Query: site (required), placement, vertical (falls back to the placement or site default), suburb, postcode, limit (max 10). Only active, in-budget campaigns in your site's brand pool are returned, ordered by bid. Impressions are recorded server-side.
POST /api/v1/events
Report clicks and impressions from your own renderer.
POST /api/v1/events
{ "site": "cheapskips", "campaign_id": "uuid", "type": "click",
"click_type": "phone", "placement": "sidebar", "suburb": "Salisbury" }POST /api/v1/leads
Submit an enquiry form. Name and an Australian phone number are required. Include campaign_id for sponsored leads; leave it out for organic directory leads.
POST /api/v1/leads
{ "site": "cheapskips", "campaign_id": "uuid",
"name": "Sam", "phone": "0400 000 000", "suburb": "Salisbury",
"service": "6m3 skip", "message": "Need it Saturday" }
-> { "ok": true, "lead_id": "uuid" }GET /api/v1/providers
The organic directory. Use it to fill pages when no paid campaign matches, so your visitors always get a result.
GET /api/v1/providers?vertical=plumbers&suburb=Prospect&limit=20
-> { "ok": true, "providers": [{ "id", "name", "phone", "website", "suburbs", "blurb" }] }Join in two minutes
Create a publisher account, register and verify your site with a meta tag or a small file, then generate your embed code. New sites start on a fifty percent revenue share, tuned higher per site for established local traffic. No minimums, no lock-in.
Prefer email? leighmcmillan20@gmail.com