Skip to main content

Install

npm install @neariq/sdk

Quick start

import { NearIQ } from '@neariq/sdk'

const client = new NearIQ({ apiKey: process.env.NEARIQ_API_KEY! })

// Get your business profile
const biz = await client.me.get()
console.log(biz.name, biz.rating)

// List tracked competitors
const { competitors, count } = await client.me.competitors({ sort: 'rating_desc' })
console.log(`Tracking ${count} competitors`)

// Check AI search visibility
const vis = await client.aiVisibility({ days: 30 })
console.log(Object.keys(vis.engines))

// Get competitive gap analysis
const gaps = await client.gapAnalysis()
console.log(gaps.analysisAvailable)

All methods

Business profile

const me = await client.me.get()
const competitors = await client.me.competitors({ sort: 'rating_desc' })
const alerts = await client.me.alerts({ type: 'rating_drop', unread: true, limit: 10 })
await client.me.dismissAlert('alert-uuid')
const snapshots = await client.me.snapshots({ from: '2026-01-01', to: '2026-03-31', limit: 90 })
const reviews = await client.me.reviews()
const health = await client.me.gbpHealth()
const templates = await client.me.responseTemplates()

Competitor intelligence

const created = await client.createCompetitor({ name: 'Apex Coffee', placeId: 'place-id' })
const nested = await client.competitors.create({ name: 'Apex Coffee', place_id: 'place-id' })
const detail = await client.competitors.get('competitor-uuid')
const history = await client.competitors.snapshots('competitor-uuid', { from: '2026-01-01', to: '2026-01-31', limit: 30 })
const reviews = await client.competitors.reviews('competitor-uuid')

Analytics

const visibility = await client.aiVisibility({ days: 30 })
const signals = await client.behavioralSignals()
const gaps = await client.gapAnalysis()
const insights = await client.gbpInsights({ days: 30 })
const ranks = await client.rankChecks({ keyword: 'pizza', limit: 10 })
const citations = await client.citations()
const reviewSearch = await client.reviews({ competitorId: 'competitor-uuid', limit: 50 })
const trends = await client.market({ period: 'last_30_days' })
const leaders = await client.leaderboard({ city: 'Austin', sort: 'rating' })
const density = await client.marketIntel.density({ category: 'restaurants' })
const saturation = await client.marketIntel.saturation({ city: 'Austin' })
const signals = await client.marketIntel.signals({ city: 'Austin' })
const projections = await client.marketIntel.projections({ months: 6 })
const hiring = await client.hiringSignals({ competitorId: 'competitor-uuid' })
const mentions = await client.brandMentions({ limit: 20 })
const keywords = await client.keywordSuggestions({ seed: 'fitness', count: 10 })
const audit = await client.siteAudit()
const chart = await client.charts({ metric: 'review_count' })
const embed = await client.createChartEmbed({ metrics: ['review_count'], range: '30d' })
const table = await client.tables({ table: 'competitors' })

Reports

const created = await client.reports.create({ lenses: ['reputation', 'growth'] })
const report = await client.reports.get(created.report.id)
const history = await client.reports.list({ limit: 10, exported: false })
const pdf = await client.reports.export(report.report.id)

Content and automation

const content = await client.content({ limit: 10, type: 'faq' })
const generated = await client.generateContent({
  type: 'gbp_post',
  topic: 'summer promotion',
  tone: 'friendly',
})
const agents = await client.agents.list()
const agent = await client.agents.get('agent-uuid')
await client.agents.create({ name: 'Weekly monitor', type: 'monitor' })
await client.agents.update('agent-uuid', { enabled: false })
await client.agents.run('agent-uuid')
await client.agents.delete('agent-uuid')

AI chat

const response = await client.chat({
  message: 'What should I focus on to beat my top competitor?',
  context: 'competitors',
})
console.log(response.message)

Creative generation

// AI images
const image = await client.generateImage({
  prompt: 'Professional photo of a modern gym interior',
  preset: 'social_graphic',
  style: 'photorealistic',
})

// Video generation
const video = await client.video.create({
  prompt: 'Before and after gym transformation',
  duration: '15',
  aspectRatio: '9:16',
})
const videos = await client.video.list({ status: 'all', limit: 20 })

// Voice clones
const clones = await client.voiceClones.list()

SEO site audit

const audit = await client.siteAudit()
console.log(`SEO: ${audit.audit.seoScore}, AEO: ${audit.audit.aeoScore}`)

Ads, social, leads, reviews

const ads = await client.ads.list()
const social = await client.socialPosts.list()
const post = await client.socialPosts.create({ platform: 'instagram', content: 'New special' })
const leads = await client.leads()
const requests = await client.reviewRequests()
const targets = await client.publishTargets()
const listings = await client.listingSync()
const conversations = await client.conversations()

Webhooks

const list = await client.webhooks.list()
const created = await client.webhooks.create({
  url: 'https://example.com/webhook',
  events: ['competitor.rating_change', 'own.rating_change']
})
await client.webhooks.update(created.id, { active: false })
await client.webhooks.delete(created.id)

Account

const usage = await client.usage()
const exported = await client.export({ include: 'business,competitors,alerts' })
const zip = await client.exportAll({ dateRange: '90d' })

Error handling

import { NearIQ, type NearIQError } from '@neariq/sdk'

try {
  await client.me.get()
} catch (err) {
  const e = err as NearIQError
  if (e.status === 401) console.log('Invalid API key')
  if (e.status === 403) console.log('Plan upgrade required')
  if (e.status === 429) console.log('Rate limited — slow down')
}

Using fetch directly

If you prefer not to use the SDK:
const res = await fetch('https://neariq.io/api/v1/me', {
  headers: { 'X-NearIQ-Key': process.env.NEARIQ_API_KEY! }
})
const data = await res.json()

Requirements

  • Node.js 18+ (uses native fetch)
  • NearIQ Growth plan or higher for API access
  • API key from Settings