Skip to Content
ProvidersSE Ranking

SE Ranking

Category: SEO & Research
Integration type: Tenant-configured API key (stored in integrations table)
External API: SE Ranking API v3


Purpose

SE Ranking is an affordable all-in-one SEO tool used for backlink intelligence and keyword rank tracking. Compared to Ahrefs (expensive, enterprise-focused) and SEMrush (tenant-specific), SE Ranking is positioned as a cost-effective option for tenants who want backlink data without a full Ahrefs subscription.

Key uses:

  • Backlink Researcher — backlink metrics and summary data for prospect qualification
  • Site Auditor — trust flow and citation flow as additional authority signals
  • Keyword Researcher — keyword rank tracking per domain (complements SEMrush keyword volume)

Tenants provide their own SE Ranking API key.


Config Structure

Tenant integration

interface SERankingConfig { apiKey: string; // SE Ranking API key — uses "Token <key>" bearer auth }
integrations row: provider: 'se_ranking' api_key: encrypt(apiKey) metadata: {}

Integration Pattern

Tool layer (packages/tools/src/se-ranking.ts)

SE Ranking API uses bearer token auth with the Token <key> format (not the standard Bearer):

class SERankingTool { private baseUrl = 'https://api4.seranking.com'; constructor(private apiKey: string) {} private headers() { return { Authorization: `Token ${this.apiKey}`, Accept: 'application/json', }; } // ── Backlink Summary ───────────────────────────────────────────────────────── async getBacklinksSummary(domain: string): Promise<BacklinksSummaryResult> { const response = await axios.get( `${this.baseUrl}/research/backlinks/summary/`, { headers: this.headers(), params: { domain, domain_type: 'domain', // 'domain' | 'page' | 'subdomain' }, }, ); return { domain, totalBacklinks: response.data.total_backlinks, referringDomains: response.data.referring_domains, referringIPs: response.data.referring_ips, trustFlow: response.data.trust_flow, citationFlow: response.data.citation_flow, domainScore: response.data.domain_trust_score, noFollowLinks: response.data.nofollow_backlinks, doFollowLinks: response.data.dofollow_backlinks, }; } // ── Backlinks List ─────────────────────────────────────────────────────────── async getBacklinks(options: { domain: string; limit?: number; offset?: number; sortBy?: 'trust_flow' | 'citation_flow' | 'first_seen'; doFollowOnly?: boolean; }): Promise<BacklinkRow[]> { const response = await axios.get( `${this.baseUrl}/research/backlinks/`, { headers: this.headers(), params: { domain: options.domain, domain_type: 'domain', limit: options.limit ?? 50, offset: options.offset ?? 0, sort_by: options.sortBy ?? 'trust_flow', filter_dofollow: options.doFollowOnly ? 1 : 0, }, }, ); return (response.data.backlinks ?? []).map((b: any) => ({ sourceUrl: b.source_url, targetUrl: b.target_url, anchorText: b.anchor_text, trustFlow: b.trust_flow, citationFlow: b.citation_flow, isNoFollow: b.nofollow, firstSeen: b.first_seen, lastSeen: b.last_seen, })); } // ── Backlink Metrics (batch) ───────────────────────────────────────────────── async getBacklinksMetrics(domains: string[]): Promise<BacklinksMetricsRow[]> { // SE Ranking supports up to 100 domains per call const response = await axios.post( `${this.baseUrl}/research/backlinks/metrics/`, { domains }, { headers: { ...this.headers(), 'Content-Type': 'application/json' } }, ); return response.data.map((row: any) => ({ domain: row.domain, trustFlow: row.trust_flow, citationFlow: row.citation_flow, referringDomains: row.referring_domains, totalBacklinks: row.total_backlinks, })); } // ── Keyword Rankings ───────────────────────────────────────────────────────── async getKeywordRankings(options: { domain: string; keywords: string[]; searchEngine: 'google' | 'bing' | 'yahoo'; location?: string; // e.g. "United States" }): Promise<KeywordRankingRow[]> { const response = await axios.post( `${this.baseUrl}/keywords/check/`, { domain: options.domain, keywords: options.keywords, search_engine: options.searchEngine, location_name: options.location ?? 'United States', }, { headers: { ...this.headers(), 'Content-Type': 'application/json' } }, ); return response.data.map((row: any) => ({ keyword: row.keyword, position: row.position, // null if not in top 100 url: row.url, volume: row.volume, })); } async verify(): Promise<void> { // Fetch account/subscription info const response = await axios.get(`${this.baseUrl}/system/account/`, { headers: this.headers(), }); if (!response.data.email) { throw new Error('SE Ranking verification failed — invalid API key'); } } }

Trust Flow vs Citation Flow

SE Ranking exposes Trust Flow and Citation Flow — metrics originally developed by Majestic SEO and now licensed by SE Ranking:

MetricRangeWhat it means
Trust Flow0–100Quality of links pointing to the domain — links from trusted sites push this up
Citation Flow0–100Volume of links — raw link count influence
Trust/Citation ratio> 0.5 = goodHigh CF + low TF = spammy link profile

These complement Moz DA and Ahrefs DR — using multiple authority signals gives a more complete picture when scoring link building prospects.


SE Ranking vs Ahrefs — When to Use Which

TaskSE RankingAhrefs
Trust Flow / Citation Flow
Domain Rating (DR)
URL Rating (UR)
Backlinks list✓ (affordable)✓ (more complete)
Keyword rank checking
API costLowHigh

Tenants with SE Ranking subscriptions use it for bulk backlink qualification. Tenants with Ahrefs use Ahrefs for deeper link analysis.


Test Cases

Unit tests (packages/tools/src/se-ranking.test.ts)

TestApproach
getBacklinksSummary() sends Token <key> auth headerMock axios.get; assert Authorization: Token ...
getBacklinksSummary() maps all response fieldsMock response; assert trustFlow, citationFlow, doFollowLinks
getBacklinks() applies doFollowOnly filterAssert filter_dofollow: 1 in params
getBacklinksMetrics() POSTs domains arrayAssert request body { domains: [...] }
getKeywordRankings() returns null position for unranked keywordsMock { position: null }; assert null preserved
verify() throws on invalid API keyMock {} response; assert throws

© 2026 Leadmetrics — Internal use only