semust logo
Domain Research API

Domain Research API

Pull the keywords any domain ranks for, its organic competitors, the keywords a competitor ranks for and you do not, and how its visibility has moved month by month, programmatically. Eight reports behind one endpoint; Turkish data covers more than 61 million keywords.

One Endpoint, Eight Reports 61M+ Turkish Keywords Row-Based Pricing Competitor Keyword Gap Errors Never Charged
Python API Example
import requests

response = requests.post(
    "https://data.semust.com/v1/domain-research",
    headers={
        "SEMUST-API-USER": "your_username",
        "SEMUST-API-PASSWORD": "your_password",
    },
    json={
        "type": "keyword_gap",
        "domain": "example.com.tr",
        "competitor": "rival.com.tr",
        "mode": "missing",
        "min_volume": 500,
        "limit": 100,
    },
    timeout=90,  # longer than ?wait= (60 seconds by default)
)

data = response.json()
if response.status_code == 202:
    # Still running: collect the result from GET /v1/tasks/{task_id}
    print(f"Task {data['task_id']}: poll {data['poll_url']}")
elif response.status_code == 200:
    for row in data["items"]:
        print(f"{row['keyword']} ({row['volume']} searches/month)")
        print(f"   Competitor: #{row['competitor_position']} {row['competitor_url']}")
Cookshop
ideasoft
Yapı Kredi
beko logo
vialand
defacto
koton
venividi logo
Cookshop
ideasoft
Yapı Kredi
beko logo
vialand
defacto
koton
venividi logo

Meet Semust, trusted by 12.000+ brands.

One Endpoint

All eight reports are selected with the `type` parameter. One request shape to learn, one authentication, the same error format across every report.

Turkish Data

Turkish data covers more than 61 million keywords, and the keyword filter handles the Turkish İ/ı correctly. Other markets are selected with the country and language parameters.

Pay Per Row

Rows returned, not bundles. A one-row overview costs $0.013332, and a 10-row query costs under one and a half cents.

What Can You Build With the Domain Research API?

Reach the organic search visibility of any domain through the data.semust.com/v1/domain-research endpoint.

overview summarises a domain: keyword count, estimated traffic and its value, and keywords in the top 3 / 10 / 20 / 100. keywords returns the keywords it ranks for with volume, CPC, difficulty, intent and position; competitors lists domains competing for the same keywords; top_pages and subdomains rank the pages and subdomains that earn its traffic. keyword_gap compares keywords against a competitor, traffic_estimate estimates traffic for up to 1000 domains, and history shows the overview numbers month by month. keywords and keyword_gap results can be narrowed by minimum search volume, intent and the text they contain.

// One endpoint, eight reports
POST /v1/domain-research

{ "type": "overview", "domain": "example.com.tr" }
{ "type": "keywords", "domain": "example.com.tr" }
{ "type": "competitors", "domain": "example.com.tr" }
{ "type": "top_pages", "domain": "example.com.tr" }
{ "type": "keyword_gap", "domain": "example.com.tr",
  "competitor": "rival.com.tr" }
{ "type": "subdomains", "domain": "example.com.tr" }
{ "type": "traffic_estimate",
  "domains": ["example.com.tr", "rival.com.tr"] }
{ "type": "history", "domain": "example.com.tr" }

One platform,Organic success stories:

Batuhan Durmaz

Batuhan Durmaz

SEO Specialist

SEMUST is a powerful tool for SEO professionals. It provides valuable data in a simple and easy‑to‑understand format, making it a great choice for both local and global projects. I use it for keyword analysis, Google Search Console data, ranking tracking, and content creation. I'm very satisfied with it.

Selen Çetin

Selen Çetin

SEO Specialist

I first came across Semust on LinkedIn, back when it was just starting to gain attention. Curious, I decided to give it a try—and it’s now become one of my favorite tools. What I appreciate most is how it handles many tasks that I used to perform manually with a single click, which makes my job significantly easier. Seeing how quickly it has evolved since the first time I used it also inspires confidence.

Aykut Özcan

Aykut Özcan

SEO Director – Digital UP

At Digital UP SEO Agency, we rely heavily on the analysis and reporting tools Semust provides throughout our SEO workflows. From keyword tracking and competitor analysis to site‑health scans and backlink audits, it brings both speed and depth to many critical areas. Thanks to the comprehensive, data‑driven insights it offers, we consistently boost our clients' search‑engine performance. Semust is a powerful partner on our agency's growth journey.

Domain Research API Frequently Asked Questions

What Is a Domain Research API and How Does It Work?

A domain research API is an interface that lets you query a domain's visibility in organic search programmatically. Instead of opening an SEO tool and typing in a domain by hand, you make a single HTTP request from your own application and receive the keywords that domain ranks for, its competitors and its traffic estimate as structured JSON. That is a foundational building block for teams building SEO tools, for agencies, and for companies running their own reporting infrastructure.

The Semust Domain Research API works through a single endpoint: you POST to data.semust.com/v1/domain-research and specify which of the eight reports you want with the type parameter. Authentication is header-based. A domain sent with https://, www. or a path is cleaned up for you, and internationalised names such as örnek.com.tr are accepted.

Why Organic Competitor Analysis Matters

Your competitors in search results are not always your competitors in business. A news site, a forum or a dictionary site may rank ahead of you on the keywords you target. The competitors report ranks domains competing for the same keywords by how many they share, and gives each one's average position on those shared keywords, its total keyword count and its estimated traffic.

The domain you research is never listed. The list often shows the real search competitors in your market more clearly than your own assumptions, and it is the natural starting point for keyword gap analysis: pass any competitor from the list straight into the keyword_gap report.

Keyword, Page and Subdomain Analysis

The keywords report returns the keywords a domain ranks for, with volume, CPC, difficulty, intent, position, ranking URL and estimated traffic. Narrow the results by minimum search volume, a position threshold, search intent and contained text, and sort by traffic, volume, position, difficulty or CPC. The text filter is case-insensitive and handles the Turkish İ/ı correctly.

The top_pages and subdomains reports look at the same data at page and subdomain level: which page and which subdomain earn the most organic traffic, how many keywords each ranks for, and how many of those sit in the top 3 and the top 10. A few requests show you which content a competitor's traffic comes from.

Domain Research API Pricing

Pricing is row-based: a base fee of $0.0132 per request plus $0.000132 for each row returned. 10 rows cost $0.01452, 100 rows $0.0264, and the maximum of 1,000 rows $0.1452. In traffic_estimate every domain sent is a row: 3 domains cost $0.013596 and 1000 cost $0.1452. history reads a monthly archive that is priced higher: $0.132 plus $0.00132 per month, so the default 12 months cost $0.14784.

Your balance holds the cost of the request's worst case, and anything not returned is refunded immediately, so setting limit to what you need lowers the cost directly. A query that returns nothing pays only the base fee. Cached answers are billed at the same price as live ones. You are never charged for an error: 4xx errors are caught before anything is charged, and a failure after that point is refunded in full.

Finding Content Opportunities With the Keyword Gap

The keywords a competitor earns traffic from while you do not appear at all are the most productive starting point for a content plan. The default missing mode of the keyword_gap report produces exactly that list: the keywords the competitor ranks for and you do not, with the competitor's position and ranking page.

shared mode puts the keywords you both rank for side by side with both positions; the ones where the competitor is ahead become your improvement list. unique mode shows the keywords only you rank for, the ground you need to defend. Results are sorted by search volume by default and can be narrowed with minimum volume, intent and text filters.

Bulk Traffic Estimates

The traffic_estimate report returns estimated organic and paid traffic for up to 1000 domains in one call: organic keyword count, estimated monthly organic visits, and the same two values for paid search. Compare an agency's prospect list, a marketplace's sellers or a competitor set in a single request.

Duplicates are merged and rows come back in the order you sent them, so you can match the results straight back to your own list. A domain we have no data for is not an error: it gets a row of zeros in its place in the list and is billed like any other domain.

Visibility History and Trend Tracking

The history report gives the overview numbers month by month, up to 60 months back: ranking keyword count, estimated traffic and its value, keywords in the top 3 / 10 / 20 / 100, and paid search data. New, lost, improved and declined keyword counts compare each month with the one before.

From that series you can read the effect of a site migration, a content campaign or an algorithm update, and compare the same period against your competitors' series. Rows are ordered oldest first, and the current month is not included until it is complete.

Integrating the Domain Research API

All you need to integrate is an API username and password, which you create from the API Access page in your account. Requests are standard HTTP POST, responses are JSON, and it can be called from any language. The documentation carries working examples for cURL, Python and Node.js. Send the Accept-Language: tr header to receive error messages in Turkish.

A request that runs longer than 60 seconds returns 202 with a task_id; you collect the result from GET /v1/tasks/{task_id}, and it is kept for 72 hours. With idempotency_key a timed-out request can be retried safely and is charged once. An unknown or misspelled parameter is rejected rather than ignored, named in the error with a suggestion, so a typo never silently returns something other than what you asked for.

More organic traffic 

  • 14-day free trial
  • No setup required
  • Search Console integration