Skip to main content

Endpoint

POST https://data.semust.com/v1/serp

Authentication

All requests require authentication headers. See Authentication for details.
HeaderTypeDescription
SEMUST-API-USERstringYour API username
SEMUST-API-PASSWORDstringYour API password

Request Parameters

Send parameters as JSON in the request body with Content-Type: application/json.
ParameterTypeRequiredDefaultDescription
keywordstringYesThe search keyword to fetch results for
languagestringNo"en"Language code (e.g., “en”, “es”, “fr”)
countrystringNo"US"Country code (e.g., “US”, “GB”, “DE”)
formatstringNo"json"Response format: “json” or “raw”
mobilebooleanNofalseWhether to fetch mobile results
start_pageintegerNo1Starting page number (1-indexed)
end_pageintegerNo1Ending page number for multi-page requests
Pagination: Each page from start_page to end_page counts as a separate credit charge. Requesting pages 1-3 costs 3x the base credit cost.

Code Examples

curl -X POST https://data.semust.com/v1/serp \
  -H "Content-Type: application/json" \
  -H "SEMUST-API-USER: your_username" \
  -H "SEMUST-API-PASSWORD: your_password" \
  -d '{
    "keyword": "best seo tools",
    "language": "en",
    "country": "US",
    "format": "json"
  }'

Multi-Page Requests

To fetch multiple pages of results, use start_page and end_page parameters. The response will be an array of result objects, one per page.
Python
import requests

response = requests.post(
    "https://data.semust.com/v1/serp",
    headers={
        "SEMUST-API-USER": "your_username",
        "SEMUST-API-PASSWORD": "your_password",
    },
    json={
        "keyword": "best seo tools",
        "format": "json",
        "start_page": 1,
        "end_page": 3,
    },
)

pages = response.json()
for i, page in enumerate(pages, start=1):
    print(f"--- Page {i} ---")
    for result in page.get("organic", []):
        print(f"  {result['rank']}. {result['title']}")
Credits: Each page counts as a separate credit charge. Requesting pages 1-3 will use 3 credits.

Response Format

JSON Format (format: "json")

Returns structured data with organic results, knowledge panels, and other SERP elements.

Raw Format (format: "raw")

Returns the raw HTML of the search results page. Useful for custom parsing or debugging.

Example Response

Single Page Response

{
  "organic": [
    {
      "rank": 1,
      "global_rank": 1,
      "title": "10 Best SEO Tools in 2025",
      "description": "Discover the top SEO tools for improving your website rankings...",
      "link": "https://example.com/best-seo-tools",
      "display_link": "https://example.com › best-seo-tools",
      "source": "Example.com",
      "extensions": [
        {
          "type": "site_link",
          "text": "Free Tools",
          "link": "https://example.com/free-tools",
          "rank": 1
        }
      ]
    },
    {
      "rank": 2,
      "global_rank": 6,
      "title": "SEO Software & Tools",
      "description": "Get more search traffic with our comprehensive SEO toolkit...",
      "link": "https://www.example.com",
      "display_link": "https://www.example.com",
      "source": "Example"
    }
  ],
  "knowledge": {
    "name": "SEO",
    "subtitle": "Search engine optimization",
    "description": "Search engine optimization is the process of...",
    "description_source": "Wikipedia",
    "facts": [
      { "key": "Full name", "value": [{ "text": "Search Engine Optimization" }] }
    ]
  },
  "people_also_ask": [
    {
      "rank": 1,
      "global_rank": 2,
      "question": "What is SEO?",
      "answer_source": "Wikipedia",
      "answers": [{ "rank": 1, "type": "answer", "value": { "text": "SEO is..." } }]
    }
  ],
  "related": [
    { "rank": 1, "global_rank": 10, "text": "SEO tools free", "link": "https://..." }
  ],
  "navigation": [{ "title": "Images", "href": "https://..." }],
  "perspectives": [{ "title": "SEO Tips", "author": "Expert", "source": "YouTube" }],
  "ai_overview": { "references": [], "texts": [] },
  "images": [{ "rank": 1, "title": "SEO Diagram", "link": "https://...", "image": "https://..." }],
  "top_ads": [{ "rank": 1, "title": "SEO Tool", "link": "https://...", "referral_link": "https://..." }],
  "bottom_ads": []
}

Multi-Page Response

[
  {
    "organic": [
      { "rank": 1, "global_rank": 1, "title": "Result 1", "link": "https://...", "source": "..." }
    ],
    "knowledge": { "name": "...", "description": "..." },
    "people_also_ask": [{ "rank": 1, "question": "...", "answers": [] }],
    "navigation": [{ "title": "Images", "href": "https://..." }]
  },
  {
    "organic": [
      { "rank": 1, "global_rank": 11, "title": "Page 2 Result", "link": "https://...", "source": "..." }
    ],
    "related": [{ "rank": 1, "text": "Related search", "link": "https://..." }]
  }
]

Response Fields Reference

Root-Level Fields

Not all fields are present in every response. Fields are included only when data is available.
FieldTypeDescription
organicarrayMain organic search results
knowledgeobjectKnowledge panel information (Wikipedia-like data)
people_also_askarray”People also ask” questions with answers
relatedarrayRelated searches at bottom of SERP
navigationarraySearch type tabs (Images, Videos, News, etc.)
perspectivesarraySocial media and forum perspectives
ai_overviewobjectAI-generated overview (Google AI Overviews)
imagesarrayImage carousel results
top_adsarraySponsored results at top of page
bottom_adsarraySponsored results at bottom of page
overviewobjectKnowledge graph metadata (kgmid, title)

Organic Result Fields

FieldTypeDescription
rankintegerPosition within organic results (1-indexed)
global_rankintegerPosition across all SERP elements
titlestringResult title
descriptionstringResult snippet/description
linkstringDestination URL
display_linkstringFormatted URL as displayed in SERP
sourcestringWebsite or source name
extensionsarraySite links, dates, and other extensions
imagestringThumbnail URL (for video results)
durationstringVideo duration (e.g., “19:10”)
duration_secintegerVideo duration in seconds

Error Codes

Error Response
{
  "error": "Your account does not have enough credits",
  "code": "INSUFFICIENT_CREDITS"
}
StatusCodeDescription
400INVALID_REQUESTInvalid request format or malformed JSON
400KEYWORD_REQUIREDMissing required keyword parameter
400INVALID_FORMATFormat must be “json” or “raw”
401INVALID_API_KEYAuthentication failed - invalid credentials
402INSUFFICIENT_CREDITSYour account does not have enough credits
429RATE_LIMIT_EXCEEDEDToo many requests, please slow down
500INTERNAL_ERRORServer-side error occurred
502SERP_FAILEDFailed to retrieve SERP data
504TIMEOUTRequest timed out

Credits & Rate Limits

Credits

Each SERP request consumes credits from your account balance. Multi-page requests consume one credit per page.

Rate Limits

API requests are rate-limited to ensure fair usage. Contact support if you need higher limits.