Access free tool functionality via API for programmatic use, with rate limits and authentication requirements.
NitroShock provides programmatic access to select free tool functionality through a REST API. This allows you to integrate rank checking, keyword research, and other SEO data into your own applications, scripts, or workflows without using the web interface. The free tools API uses token-based authentication and includes rate limits to ensure fair access for all users.
The NitroShock free tools API provides programmatic access to a subset of features available through the web interface. This API is designed for developers who need to automate SEO tasks, integrate SEO data into external systems, or build custom applications on top of NitroShock's infrastructure.
The following free tools are accessible via API:
These endpoints mirror the functionality available in the web-based free tools but return structured JSON responses suitable for programmatic consumption.
The API does not currently provide access to:
For project-based features, you'll need to use the web interface at your Account Dashboard or individual Project Dashboards.
The free tools API serves different use cases than the main NitroShock platform:
Use the API when you need to:
Use the web interface when you need to:
Many users leverage both - using the web interface for day-to-day project management while employing the API for specialized automation tasks.
All API requests require authentication using an API key generated from your NitroShock account. The API uses bearer token authentication following industry-standard OAuth 2.0 patterns.
To create an API key for free tools access:
nitroshock.aiStore your API key securely. Treat it like a password - never commit it to version control or expose it in client-side code.
Include your API key in the Authorization header of every request:
Authorization: Bearer YOUR_API_KEY_HERE
Example using curl:
curl -H "Authorization: Bearer ns_live_abc123xyz789"
https://api.nitroshock.ai/v1/free-tools/keyword-research?keyword=wordpress+seo
Example using Python with the requests library:
import requests
headers = {
'Authorization': 'Bearer ns_live_abc123xyz789',
'Content-Type': 'application/json'
}
response = requests.get(
'https://api.nitroshock.ai/v1/free-tools/keyword-research',
headers=headers,
params={'keyword': 'wordpress seo'}
)
data = response.json()
Rotate keys regularly: Generate new API keys every 90 days and deactivate old ones. You can create multiple keys and rotate them without service interruption.
Use environment variables: Store keys in environment variables rather than hardcoding them in your application:
import os
api_key = os.environ.get('NITROSHOCK_API_KEY')
Limit key scope: Create separate keys for different applications or environments (development, staging, production). This makes it easier to revoke access if a key is compromised.
Monitor key usage: Check the API Access section in your Settings tab regularly to review which keys are active and when they were last used.
If a key is compromised or no longer needed:
Revoked keys stop working immediately. Any applications using the revoked key will receive 401 Unauthorized responses.
Common authentication error responses:
401 Unauthorized - Invalid or missing API key. Check that your Authorization header is correctly formatted and the key hasn't been revoked.
403 Forbidden - Valid key but insufficient permissions for the requested endpoint. Ensure your key has the Free Tools scope enabled.
429 Too Many Requests - You've exceeded rate limits (see Rate Limits section below).
The free tools API uses RESTful principles with predictable resource-oriented URLs. All endpoints return JSON responses and use standard HTTP response codes.
All API requests use the base URL:
https://api.nitroshock.ai/v1/free-tools/
Endpoint: GET /keyword-research
Retrieve search volume, keyword difficulty, CPC data, and related keywords for any search term.
Parameters:
keyword (required) - The keyword to analyzelocation (optional) - Country code for localized data (default: US)language (optional) - Language code (default: en)Example Request:
GET /v1/free-tools/keyword-research?keyword=content+marketing&location=US
Example Response:
{
"keyword": "content marketing",
"volume": 33100,
"difficulty": 67,
"cpc": 8.42,
"competition": "high",
"trend": [27100, 29000, 31200, 33100],
"related_keywords": [
{
"keyword": "content marketing strategy",
"volume": 8100,
"difficulty": 62
},
{
"keyword": "what is content marketing",
"volume": 5400,
"difficulty": 58
}
]
}
Endpoint: GET /serp-analysis
Get current search engine results for any keyword, including rankings, SERP features, and domain information.
Parameters:
keyword (required) - The search termengine (optional) - Search engine: google, bing, yahoo (default: google)location (optional) - Geographic location for resultsdevice (optional) - desktop or mobile (default: desktop)Example Request:
GET /v1/free-tools/serp-analysis?keyword=seo+tools&engine=google&device=desktop
Example Response:
{
"keyword": "seo tools",
"engine": "google",
"device": "desktop",
"results": [
{
"position": 1,
"url": "https://example.com/best-seo-tools",
"title": "10 Best SEO Tools for 2024",
"domain": "example.com",
"description": "Comprehensive guide to SEO tools..."
}
],
"serp_features": [
"featured_snippet",
"people_also_ask",
"related_searches"
]
}
Endpoint: GET /domain-authority
Retrieve authority metrics for any domain, including domain rating, page authority, and trust scores.
Parameters:
domain (required) - The domain to analyze (without protocol)Example Request:
GET /v1/free-tools/domain-authority?domain=example.com
Example Response:
{
"domain": "example.com",
"domain_rating": 78,
"page_authority": 82,
"trust_score": 76,
"referring_domains": 15420,
"total_backlinks": 284567
}
Endpoint: GET /backlink-count
Get a quick count of referring domains and total backlinks for any domain.
Parameters:
domain (required) - The domain to checkExample Request:
GET /v1/free-tools/backlink-count?domain=example.com
Example Response:
{
"domain": "example.com",
"referring_domains": 15420,
"total_backlinks": 284567,
"last_updated": "2024-01-15T10:30:00Z"
}
Endpoint: POST /page-speed
Run a Lighthouse audit on any URL to get performance, SEO, accessibility, and best practices scores.
Parameters:
url (required) - The URL to auditdevice (optional) - desktop or mobile (default: mobile)categories (optional) - Array of categories: performance, seo, accessibility, best-practicesExample Request:
POST /v1/free-tools/page-speed
Content-Type: application/json
{
"url": "https://example.com",
"device": "mobile",
"categories": ["performance", "seo"]
}
Example Response:
{
"url": "https://example.com",
"device": "mobile",
"scores": {
"performance": 87,
"seo": 92
},
"metrics": {
"first_contentful_paint": 1.2,
"largest_contentful_paint": 2.1,
"cumulative_layout_shift": 0.05,
"total_blocking_time": 180
}
}
Endpoint: GET /meta-tags
Extract meta information, Open Graph tags, and Schema markup from any URL.
Parameters:
url (required) - The URL to analyzeExample Request:
GET /v1/free-tools/meta-tags?url=https://example.com/blog-post
Example Response:
{
"url": "https://example.com/blog-post",
"title": "Complete Guide to SEO",
"meta_description": "Learn everything about SEO...",
"canonical": "https://example.com/blog-post",
"og_title": "Complete Guide to SEO",
"og_description": "Learn everything about SEO...",
"og_image": "https://example.com/images/seo-guide.jpg",
"schema_types": ["Article", "BreadcrumbList"]
}
All endpoints use standard HTTP status codes:
200 OK - Request successful400 Bad Request - Invalid parameters401 Unauthorized - Missing or invalid API key403 Forbidden - Insufficient permissions404 Not Found - Endpoint doesn't exist429 Too Many Requests - Rate limit exceeded500 Internal Server Error - Server-side errorError responses include a JSON body with details:
{
"error": {
"code": "invalid_parameter",
"message": "The 'keyword' parameter is required",
"param": "keyword"
}
}
The free tools API implements rate limiting to ensure fair access and system stability. Rate limits apply per API key and reset on a rolling window basis.
Free tools API requests are limited to:
These limits apply across all free tools endpoints combined. If you make 50 keyword research requests and 30 SERP analysis requests in an hour, you've used 80 of your 100 hourly requests.
Every API response includes headers showing your current rate limit status:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 73
X-RateLimit-Reset: 1642345678
X-RateLimit-Limit: Your total request quota for the current window
X-RateLimit-Remaining: How many requests you have left in the current window
X-RateLimit-Reset: Unix timestamp when your quota resets
Monitor these headers in your application to avoid hitting rate limits unexpectedly.
When you exceed rate limits, the API returns a 429 Too Many Requests response:
{
"error": {
"code": "rate_limit_exceeded",
"message": "You have exceeded your hourly rate limit of 100 requests",
"retry_after": 1847
}
}
The retry_after value indicates how many seconds to wait before making another request.
Best practice: Implement exponential backoff when you receive 429 responses:
import time
import requests
def make_api_request(url, headers, max_retries=3):
for attempt in range(max_retries):
response = requests.get(url, headers=headers)
if response.status_code == 429:
retry_after = int(response.headers.get('Retry-After', 60))
time.sleep(retry_after)
continue
return response
raise Exception("Max retries exceeded")
Batch requests when possible: Instead of making separate requests for each keyword, collect multiple keywords and process them in batches during off-peak hours.
Cache responses: Many SEO metrics don't change frequently. Cache keyword research data, domain authority scores, and SERP results for reasonable periods (1-7 days depending on your needs).
Use conditional requests: The API supports If-Modified-Since headers for some endpoints. This allows you to avoid consuming rate limit quota when data hasn't changed.
Implement request queuing: Build a queue system in your application to control request flow and stay within rate limits:
from queue import Queue
import time
request_queue = Queue()
requests_per_hour = 100
delay_between_requests = 3600 / requests_per_hour # 36 seconds
def process_queue():
while not request_queue.empty():
request = request_queue.get()
# Make API request
time.sleep(delay_between_requests)
Monitor your usage: Regularly check the Settings → API Access section in your account dashboard to review your API usage patterns and identify optimization opportunities.
If your use case requires higher rate limits:
Rate limit increases are evaluated based on:
Approval typically takes 2-3 business days. Premium accounts receive higher default rate limits and priority consideration for increase requests.
Some resource-intensive endpoints have additional specific limits:
Page Speed Analysis: Maximum 20 requests per hour (counts toward your overall limit)
SERP Analysis: Maximum 500 requests per day for mobile device parameter
These endpoint-specific limits prevent abuse of computationally expensive operations while still allowing generous access for legitimate use cases.
**Can I use the free tools API without a NitroSh