apyhub
Back

SEO Toolkit API

What it does

SEO Toolkit gives you a small set of endpoints for generating and checking common on-page SEO assets. Send page content, site details, or target keywords, and get back the tags, markup, or text statistics you need to wire into your product.

Use SEO Toolkit to generate meta tags from a page title and description, build schema.org JSON-LD for an article, FAQ, or organization, and create robots.txt plus sitemap.xml from a domain and a list of paths. It also includes a keyword density checker that returns total word count, keyword count, density percentage, and the positions where the keyword appears.

If you need social or content workflows, you can extract or generate hashtags from text or keywords. The meta tags endpoint returns ready-to-paste HTML plus the same tags as key-value pairs, so you can drop the output directly into a page head or preview it before publishing.

This is a good fit for CMS integrations, publishing pipelines, internal SEO tools, and automated site audits where you want structured output without hand-crafting every file or tag.

▣ ENDPOINT 01 / 05
POST
SEO Meta Tags Generator
https://api.eu.apyhub.com/freedailypro/seo-toolkit-api/seo/meta-tags

QUICKSTART

GUIDE

Quickstart

Generate meta tags from a page title and description.

curl -X POST "https://api.eu.apyhub.com/freedailypro/seo-toolkit-api/seo/meta-tags" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"title":"Acme Inc. — Smarter Analytics","description":"Track your business metrics in one simple dashboard."}'

What you'll get back

Returns a JSON object with tool (string), html (string), and tags (object) fields. tool identifies the generator, html contains ready-to-paste meta tags, and tags contains the same tags as key-value pairs.

{
  "tool": "meta-tags",
  "html": "<meta ...>",
  "tags": {
    "title": "Acme Inc. — Smarter Analytics"
  }
}
TRY ITLIVE · 10 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
body*

About this endpoint

What it does

Generates SEO meta tags for a page from the provided body fields and returns them both as ready-to-paste HTML and as key-value pairs. The response also includes the name of the tool that produced the result.

Request Body

ParameterTypeMandatoryDescription
urlStringNoPage URL.
typeStringNoMeta type value.
imageStringNoImage URL or path used in the generated tags.
titleStringYesPage title.
siteNameStringNoSite name used in the generated tags.
descriptionStringYesPage description.
twitterCardENUMNoTwitter card type. Allowed values: summary, summary_large_image.

Response

Returns a JSON object with required tool, html, and tags fields. tool is a string naming the tool that produced the response, html is a string containing the meta tags as ready-to-paste HTML for the page head, and tags is an object containing the same tags as key-value pairs.

AttributeTypeMandatoryDescription
toolStringYesName of the tool that produced the response.
htmlStringYesThe meta tags as ready-to-paste HTML for the page head.
tagsObjectYesThe same tags as key-value pairs. tags may include additional properties.
▣ ENDPOINT 02 / 05
POST
Schema Markup (JSON-LD) Generator
https://api.eu.apyhub.com/freedailypro/seo-toolkit-api/seo/schema

QUICKSTART

GUIDE

Quickstart

Send the required schema type and data to generate a schema.org JSON-LD object.

curl -X POST "https://api.eu.apyhub.com/freedailypro/seo-toolkit-api/seo/schema" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"type":"article","data":{"headline":"How to improve your site SEO","description":"A practical guide to on-page SEO best practices.","url":"https://example.com/blog/seo-guide"}}'

What you'll get back

Returns a JSON object with tool as a string, result as an object containing the schema.org JSON-LD payload, and warnings as an array of strings for any recommended fields that were not provided.

{
  "tool": "seo-schema",
  "result": {
    "@context": "https://schema.org",
    "@type": "Article"
  },
  "warnings": []
}
TRY ITLIVE · 10 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
body*
data*

About this endpoint

What it does

Generates a schema.org JSON-LD object from the submitted schema type and data. The request body must include type and data; the response returns the generated JSON-LD in result, the producing tool name in tool, and any missing recommended fields in warnings.

Request Body

ParameterTypeMandatoryDescription
typeENUMYesSchema type to generate. Allowed values: article, faq, organization.
dataObjectYesInput data used to build the JSON-LD object. Additional properties are allowed.

Response

Returns a JSON object with three top-level fields: tool is a string naming the tool that produced the response, result is an object containing the schema.org JSON-LD object, and warnings is an array of strings listing recommended fields that were not provided. The response schema does not declare a fixed status code.

ParameterTypeMandatoryDescription
toolStringYesName of the tool that produced the response.
resultObjectYesThe schema.org JSON-LD object to add to the page inside a <script type="application/ld+json"> tag. Additional properties are allowed.
warningsString ArrayYesRecommended fields that were not provided, such as image, author, or datePublished for an article. Empty when nothing is missing.
▣ ENDPOINT 03 / 05
POST
Robots.txt & Sitemap Generator
https://api.eu.apyhub.com/freedailypro/seo-toolkit-api/seo/robots-sitemap

QUICKSTART

GUIDE

Quickstart

Generate robots.txt and sitemap.xml for a domain and list of pages.

curl -X POST "https://api.eu.apyhub.com/freedailypro/seo-toolkit-api/seo/robots-sitemap" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"domain":"https://example.com","pages":["/","/about"]}'

What you'll get back

Returns a JSON object with a tool string and a result object. result contains robotsTxt and sitemapXml strings with the generated file contents.

{
  "tool": "seo-toolkit-api",
  "result": {
    "robotsTxt": "User-agent: *\nAllow: /",
    "sitemapXml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>..."
  }
}
TRY ITLIVE · 10 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
body*
pages*

About this endpoint

What it does

Generates robots.txt and sitemap.xml content from the provided domain and list of pages. The response returns the generated files as strings, along with the tool name that produced them.

Request Body

ParameterTypeMandatoryDescription
domainStringYesThe site domain as a URI.
pagesString ArrayYesPage paths to include in the generated sitemap. Maximum 500 items.

Response

Returns a JSON object with a tool string field and a result object field. The result object contains two string fields: robotsTxt and sitemapXml.

ParameterTypeMandatoryDescription
toolStringYesName of the tool that produced the response.
resultObjectYesThe generated files.
result.robotsTxtStringYesContents of the robots.txt file.
result.sitemapXmlStringYesContents of the sitemap.xml file.
▣ ENDPOINT 04 / 05
POST
Keyword Density Checker
https://api.eu.apyhub.com/freedailypro/seo-toolkit-api/seo/keyword-density

QUICKSTART

GUIDE

Quickstart

Checks the density of a keyword within a text sample.

curl -X POST "https://api.eu.apyhub.com/freedailypro/seo-toolkit-api/seo/keyword-density" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "ApyHub makes SEO keyword analysis simple. Keyword density helps you optimize keyword usage.",
    "keyword": "keyword"
  }'

What you'll get back

Returns a JSON object with a tool string and a result object. result includes totalWords and keywordCount numbers, densityPercent as a number, and occurrences as an array of word positions starting from 0.

{
  "tool": "keyword-density",
  "result": {
    "totalWords": 13,
    "keywordCount": 3,
    "densityPercent": 23.08,
    "occurrences": [4, 8, 11]
  }
}
TRY ITLIVE · 10 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
body*

About this endpoint

What it does

Checks the density of a keyword within submitted text and returns keyword statistics for that text.

Request Body

ParameterTypeMandatoryDescription
textStringYesThe text to analyze.
keywordStringYesThe keyword to search for.
caseSensitiveBooleanNoWhether keyword matching is case-sensitive.

Response

Returns a JSON object with a tool string field and a result object field. The result object contains keyword statistics: totalWords (number), keywordCount (number), densityPercent (number), and occurrences (array of numbers).

ParameterTypeMandatoryDescription
toolStringYesName of the tool that produced the response.
resultObjectYesKeyword statistics object.
result.totalWordsNumberYesTotal number of words in the text.
result.keywordCountNumberYesNumber of times the keyword appears.
result.densityPercentNumberYesKeyword count as a percentage of total words.
result.occurrencesNumber ArrayYesWord positions starting from 0 where the keyword appears.
▣ ENDPOINT 05 / 05
POST
Hashtag Extractor & Generator
https://api.eu.apyhub.com/freedailypro/seo-toolkit-api/seo/hashtags

QUICKSTART

GUIDE

Quickstart

Generate or extract hashtags from text with a minimal JSON request.

curl -X POST "https://api.eu.apyhub.com/freedailypro/seo-toolkit-api/seo/hashtags" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"action":"generate","keywords":["seo","marketing","content"],"max":5}'

What you'll get back

Returns a JSON object with a tool string and a result array of strings. tool is the name of the tool that produced the response, and result contains the hashtags found in the text or created from the keywords.

{
  "tool": "hashtags",
  "result": ["#seo", "#marketing", "#content"]
}
TRY ITLIVE · 10 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
body*
keywords

About this endpoint

What it does

Extracts hashtags from provided text or generates hashtags from provided keywords, based on the action you send. The response returns the tool name and an array of hashtag strings.

Request Body

ParameterTypeMandatoryDescription
actionENUMYesOperation to perform. Allowed values: extract, generate.
maxNumberNoMaximum number of hashtags to return. Minimum: 1, maximum: 50.
textStringNoInput text to extract hashtags from. Used for extract.
keywordsString ArrayNoKeywords to generate hashtags from.

Response

Returns a JSON object with required tool and result fields. tool is a string naming the tool that produced the response, and result is an array of hashtag strings found in the text or generated from the keywords.

ParameterTypeMandatoryDescription
toolStringYesName of the tool that produced the response.
resultString ArrayYesThe hashtags found in the text (extract) or created from the keywords (generate).
▣ COMMON ERRORS

Errors any endpoint can return

400bad_request

Required parameter missing or malformed body.

401unauthorized

API key missing, revoked, or not authorized for this service.

429rate_limited

Your plan's per-second rate exceeded. Retry with exponential backoff.

503upstream_busy

Backend temporarily unavailable. Try again in a few seconds.