import requests
import time
from datetime import datetime
class RankTracker:
def __init__(self, api_key, target_domain):
self.api_key = api_key
self.target_domain = target_domain
def check_rank(self, keyword):
response = requests.get("https://api.ujeebu.com/serp",
headers={"ApiKey": self.api_key},
params={
"search": keyword,
"search_type": "search",
"lang": "en",
"location": "US",
"results_count": 100 # Check top 100
})
if response.status_code != 200:
return None
results = response.json().get("organic_results", [])
# Find the position of the target domain
for result in results:
link = result.get("link", "")
if self.target_domain in link:
return {
"keyword": keyword,
"position": result.get("position"),
"url": link,
"title": result.get("title", ""),
"date": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
}
return {
"keyword": keyword,
"position": None, # Not in top 100
"url": None,
"title": None,
"date": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
}
def track_multiple_keywords(self, keywords):
results = []
for keyword in keywords:
results.append(self.check_rank(keyword))
time.sleep(2) # Rate limiting
return results
# Usage
tracker = RankTracker("YOUR_API_KEY", "example.com")
keywords = ["web scraping", "data extraction", "web scraping tools"]
rankings = tracker.track_multiple_keywords(keywords)
for ranking in rankings:
if ranking["position"]:
print(f"Keyword: {ranking['keyword']} - Position: {ranking['position']}")
else:
print(f"Keyword: {ranking['keyword']} - Not in top 100")
const axios = require('axios');
class RankTracker {
constructor(apiKey, targetDomain) {
this.apiKey = apiKey;
this.targetDomain = targetDomain;
}
async checkRank(keyword) {
let response;
try {
response = await axios.get('https://api.ujeebu.com/serp', {
headers: { 'ApiKey': this.apiKey },
params: {
search: keyword,
search_type: 'search',
lang: 'en',
location: 'US',
results_count: 100 // Check top 100
}
});
} catch (err) {
return null;
}
const results = response.data.organic_results || [];
// Find the position of the target domain
for (const result of results) {
const link = result.link || '';
if (link.includes(this.targetDomain)) {
return {
keyword,
position: result.position ?? null,
url: link,
title: result.title || '',
date: new Date().toISOString()
};
}
}
return {
keyword,
position: null, // Not in top 100
url: null,
title: null,
date: new Date().toISOString()
};
}
async trackMultipleKeywords(keywords) {
const results = [];
for (const keyword of keywords) {
results.push(await this.checkRank(keyword));
await new Promise(resolve => setTimeout(resolve, 2000)); // Rate limiting
}
return results;
}
}
// Usage
const tracker = new RankTracker('YOUR_API_KEY', 'example.com');
const keywords = ['web scraping', 'data extraction', 'web scraping tools'];
tracker.trackMultipleKeywords(keywords).then(rankings => {
for (const ranking of rankings) {
if (ranking.position) {
console.log(`Keyword: ${ranking.keyword} - Position: ${ranking.position}`);
} else {
console.log(`Keyword: ${ranking.keyword} - Not in top 100`);
}
}
});
from ujeebu_python import UjeebuClient
import time
from datetime import datetime
uj = UjeebuClient(api_key="YOUR_API_KEY")
class RankTracker:
def __init__(self, target_domain):
self.target_domain = target_domain
def check_rank(self, keyword):
res = uj.serp(params={
"search": keyword,
"search_type": "search",
"lang": "en",
"location": "US",
"results_count": 100 # Check top 100
})
results = res.json().get("organic_results", [])
# Find the position of the target domain
for result in results:
link = result.get("link", "")
if self.target_domain in link:
return {
"keyword": keyword,
"position": result.get("position"),
"url": link,
"title": result.get("title", ""),
"date": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
}
return {
"keyword": keyword,
"position": None, # Not in top 100
"url": None,
"title": None,
"date": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
}
def track_multiple_keywords(self, keywords):
results = []
for keyword in keywords:
results.append(self.check_rank(keyword))
time.sleep(2) # Rate limiting
return results
# Usage
tracker = RankTracker("example.com")
keywords = ["web scraping", "data extraction", "web scraping tools"]
rankings = tracker.track_multiple_keywords(keywords)
for ranking in rankings:
if ranking["position"]:
print(f"Keyword: {ranking['keyword']} - Position: {ranking['position']}")
else:
print(f"Keyword: {ranking['keyword']} - Not in top 100")
const { UjeebuClient } = require('@ujeebu-org/ujeebu-sdk');
const client = new UjeebuClient("YOUR_API_KEY");
class RankTracker {
constructor(targetDomain) {
this.targetDomain = targetDomain;
}
async checkRank(keyword) {
let res;
try {
res = await client.serp({
search: keyword,
search_type: 'search',
lang: 'en',
location: 'US',
results_count: 100 // Check top 100
});
} catch (err) {
return null;
}
const results = res.data.organic_results || [];
// Find the position of the target domain
for (const result of results) {
const link = result.link || '';
if (link.includes(this.targetDomain)) {
return {
keyword,
position: result.position ?? null,
url: link,
title: result.title || '',
date: new Date().toISOString()
};
}
}
return {
keyword,
position: null, // Not in top 100
url: null,
title: null,
date: new Date().toISOString()
};
}
async trackMultipleKeywords(keywords) {
const results = [];
for (const keyword of keywords) {
results.push(await this.checkRank(keyword));
await new Promise(resolve => setTimeout(resolve, 2000)); // Rate limiting
}
return results;
}
}
// Usage
const tracker = new RankTracker('example.com');
const keywords = ['web scraping', 'data extraction', 'web scraping tools'];
tracker.trackMultipleKeywords(keywords).then(rankings => {
for (const ranking of rankings) {
if (ranking.position) {
console.log(`Keyword: ${ranking.keyword} - Position: ${ranking.position}`);
} else {
console.log(`Keyword: ${ranking.keyword} - Not in top 100`);
}
}
});
<?php
class RankTracker {
private $apiKey;
private $targetDomain;
public function __construct($apiKey, $targetDomain) {
$this->apiKey = $apiKey;
$this->targetDomain = $targetDomain;
}
public function checkRank($keyword) {
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => 'https://api.ujeebu.com/serp?' . http_build_query([
'search' => $keyword,
'search_type' => 'search',
'lang' => 'en',
'location' => 'US',
'results_count' => 100 // Check top 100
]),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['ApiKey: ' . $this->apiKey]
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode !== 200) {
return null;
}
$data = json_decode($response, true);
$results = $data['organic_results'] ?? [];
// Find the position of the target domain
foreach ($results as $result) {
$link = $result['link'] ?? '';
if (strpos($link, $this->targetDomain) !== false) {
return [
'keyword' => $keyword,
'position' => $result['position'] ?? null,
'url' => $link,
'title' => $result['title'] ?? '',
'date' => date('Y-m-d H:i:s')
];
}
}
return [
'keyword' => $keyword,
'position' => null, // Not in top 100
'url' => null,
'title' => null,
'date' => date('Y-m-d H:i:s')
];
}
public function trackMultipleKeywords($keywords) {
$results = [];
foreach ($keywords as $keyword) {
$results[] = $this->checkRank($keyword);
sleep(2); // Rate limiting
}
return $results;
}
}
// Usage
$tracker = new RankTracker('YOUR_API_KEY', 'example.com');
$keywords = ['web scraping', 'data extraction', 'web scraping tools'];
$rankings = $tracker->trackMultipleKeywords($keywords);
foreach ($rankings as $ranking) {
if ($ranking['position']) {
echo "Keyword: {$ranking['keyword']} - Position: {$ranking['position']}\n";
} else {
echo "Keyword: {$ranking['keyword']} - Not in top 100\n";
}
}
package main
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"strconv"
"strings"
"time"
)
type Ranking struct {
Keyword string
Position *int
URL string
Title string
Date string
}
type RankTracker struct {
apiKey string
targetDomain string
}
func (rt *RankTracker) checkRank(keyword string) *Ranking {
q := url.Values{
"search": {keyword},
"search_type": {"search"},
"lang": {"en"},
"location": {"US"},
"results_count": {strconv.Itoa(100)}, // Check top 100
}
req, _ := http.NewRequest("GET", "https://api.ujeebu.com/serp?"+q.Encode(), nil)
req.Header.Set("ApiKey", rt.apiKey)
res, err := http.DefaultClient.Do(req)
if err != nil {
return nil
}
body, _ := io.ReadAll(res.Body)
res.Body.Close()
if res.StatusCode != 200 {
return nil
}
var data struct {
OrganicResults []struct {
Position int `json:"position"`
Link string `json:"link"`
Title string `json:"title"`
} `json:"organic_results"`
}
json.Unmarshal(body, &data)
now := time.Now().Format("2006-01-02 15:04:05")
// Find the position of the target domain
for _, result := range data.OrganicResults {
if strings.Contains(result.Link, rt.targetDomain) {
pos := result.Position
return &Ranking{Keyword: keyword, Position: &pos, URL: result.Link, Title: result.Title, Date: now}
}
}
return &Ranking{Keyword: keyword, Position: nil, Date: now} // Not in top 100
}
func (rt *RankTracker) trackMultipleKeywords(keywords []string) []*Ranking {
var results []*Ranking
for _, keyword := range keywords {
results = append(results, rt.checkRank(keyword))
time.Sleep(2 * time.Second) // Rate limiting
}
return results
}
func main() {
tracker := &RankTracker{apiKey: "YOUR_API_KEY", targetDomain: "example.com"}
keywords := []string{"web scraping", "data extraction", "web scraping tools"}
rankings := tracker.trackMultipleKeywords(keywords)
for _, ranking := range rankings {
if ranking.Position != nil {
fmt.Printf("Keyword: %s - Position: %d\n", ranking.Keyword, *ranking.Position)
} else {
fmt.Printf("Keyword: %s - Not in top 100\n", ranking.Keyword)
}
}
}
package main
import (
"encoding/json"
"fmt"
"log"
"strings"
"time"
"github.com/ujeebu/ujeebu-go"
)
type Ranking struct {
Keyword string
Position *int
URL string
Title string
Date string
}
type RankTracker struct {
client *ujeebu.Client
targetDomain string
}
func (rt *RankTracker) checkRank(keyword string) *Ranking {
body, _, err := rt.client.Serp(ujeebu.SerpParams{
Search: keyword,
SearchType: "search",
Lang: "en",
Location: "US",
ResultsCount: 100, // Check top 100
})
if err != nil {
return nil
}
var data struct {
OrganicResults []struct {
Position int `json:"position"`
Link string `json:"link"`
Title string `json:"title"`
} `json:"organic_results"`
}
json.Unmarshal(body, &data)
now := time.Now().Format("2006-01-02 15:04:05")
// Find the position of the target domain
for _, result := range data.OrganicResults {
if strings.Contains(result.Link, rt.targetDomain) {
pos := result.Position
return &Ranking{Keyword: keyword, Position: &pos, URL: result.Link, Title: result.Title, Date: now}
}
}
return &Ranking{Keyword: keyword, Position: nil, Date: now} // Not in top 100
}
func (rt *RankTracker) trackMultipleKeywords(keywords []string) []*Ranking {
var results []*Ranking
for _, keyword := range keywords {
results = append(results, rt.checkRank(keyword))
time.Sleep(2 * time.Second) // Rate limiting
}
return results
}
func main() {
client, err := ujeebu.NewClient("YOUR_API_KEY")
if err != nil {
log.Fatal(err)
}
tracker := &RankTracker{client: client, targetDomain: "example.com"}
keywords := []string{"web scraping", "data extraction", "web scraping tools"}
rankings := tracker.trackMultipleKeywords(keywords)
for _, ranking := range rankings {
if ranking.Position != nil {
fmt.Printf("Keyword: %s - Position: %d\n", ranking.Keyword, *ranking.Position)
} else {
fmt.Printf("Keyword: %s - Not in top 100\n", ranking.Keyword)
}
}
}