with Similarweb DigitalRank API and Google Identity?
List the top-ranking websites globally. See the documentation
Returns the number of monthly data points remaining in your Similarweb account. See the documentation
Retrieves the global rank of a specific website using Similarweb's Digital Rank API. See the documentation
The Similarweb DigitalRank API provides insights into website traffic and engagement, offering metrics like global rank, country rank, and category rank of a domain. With this API on Pipedream, you can automate competitive analysis, monitor changes in website popularity, and integrate web ranking data into your marketing, SEO, or content strategies. Pipedream's serverless platform allows you to create workflows that react to this data in real-time, connecting to other services to act upon these insights.
import { axios } from "@pipedream/platform"
export default defineComponent({
props: {
similarweb_digitalrank_api: {
type: "app",
app: "similarweb_digitalrank_api",
}
},
async run({steps, $}) {
return await axios($, {
url: `https://api.similarweb.com/user-capabilities`,
params: {
api_key: `${this.similarweb_digitalrank_api.$auth.api_key}`,
},
})
},
})
import axios from "axios";
import * as jsrsasign from "jsrsasign";
export default defineComponent({
props: {
google_identity: {
type: "app",
app: "google_identity",
}
},
async run({ steps, $ }) {
const serviceAccountKey = JSON.parse(this.google_identity.$auth.service_account_key);
const GOOGLE_OAUTH = 'https://www.googleapis.com/oauth2/v4/token';
// add/remove your own scopes as needed
const SCOPES = [
'https://www.googleapis.com/auth/userinfo.email',
'https://www.googleapis.com/auth/userinfo.profile',
'https://www.googleapis.com/auth/cloud-platform',
'https://www.googleapis.com/auth/cloud-identity',
];
const getJwt = async function ({ client_email, private_key }, iat) {
const header = {
typ: 'JWT',
alg: 'RS256',
};
const exp = iat + 3600;
const payload = {
aud: GOOGLE_OAUTH,
iss: client_email,
scope: SCOPES.join(' '),
iat,
exp,
};
const jwt = jsrsasign.KJUR.jws.JWS.sign(null, header, payload, private_key);
return { jwt, exp };
};
const getToken = async function (serviceAccountKey) {
const now = Math.floor(Date.now() / 1000);
const jwtInfo = await getJwt(serviceAccountKey, now);
const params = new URLSearchParams();
params.append('grant_type', 'urn:ietf:params:oauth:grant-type:jwt-bearer');
params.append('assertion', jwtInfo.jwt);
const response = await axios.post(GOOGLE_OAUTH, params, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
});
const accessToken = response.data.access_token;
return accessToken;
};
const generateOAuthToken = async function () {
return await getToken(serviceAccountKey);
};
// Call the function to generate the token
const accessToken = await generateOAuthToken();
// Call the Google Identity API to search for groups
const response = await axios({
method: "GET",
url: "https://cloudidentity.googleapis.com/v1/groups:search",
headers: {
Authorization: `Bearer ${accessToken}`,
"Content-Type": "application/json"
},
params: {
query: "parent == 'customers/C046psxkn'"
}
})
return response.data
},
})