Textfocus API documentation

Contents

Introduction

The Textfocus APIs allow you to perform various SEO and semantic analyses. This documentation explains how to call them, their parameters and their usefulness. APIs are available to subscribers of the "Classic" and "Comfort" packs.

API calls are limited to 30 per day in the Classic plan and 1 per minute in the Agency plan.

Each request consumes a credit on your account.

You can find your API key at your account.

The optional parameter force_refetch (value 1) is supported by all APIs except tf_langs and tf_robotstxt. When enabled, the cache is bypassed and all computations are rerun on the fly. Use with caution: this increases response time and consumes a credit just like a normal call.

These APIs have been public since March 2025. We know how important it is for APIs to be responsive and answer without error.
If, despite our vigilance, you encounter any error codes with the APIs, please contact us. We'll do our best to get back to you as soon as possible.

MCP Server: Use with AI

The MCP (Model Context Protocol) allows an AI assistant (Claude, Windsurf, Cursor, Cline, etc.) to directly call Textfocus APIs during a conversation, without you having to copy and paste data.

AI can thus run an SEO analysis, retrieve search volumes, or compare competitors, then interpret the results and make recommendations—all in a single interaction.

Textfocus offers a hosted MCP server accessible at the following address:

In both cases, your API key must be provided with every connection.

Claude Desktop (Windows / macOS)

Open the configuration file:

Add the following entry to the mcpServers section:

{
  "mcpServers": {
    "textfocus": {
      "type": "sse",
      "url": "https://textfocus.onrender.com/sse",
      "headers": {
        "X-API-Key": "Your API key"
      }
    }
  }
}

Restart Claude Desktop. The Textfocus tools (tf_seo, tf_keyword, tf_competition…) will then appear in the list of available tools (hammer icon).

Claude.ai (web version)

In Settings → Integrations, add a new MCP server using the following URL:

https://textfocus.onrender.com/mcp?key=Your API key

The OAuth fields are optional and can be left blank. Your key is passed directly in the URL.

Claude Code (CLI / IDE extension)

In the Claude Code configuration file (~/.claude.json or in the project settings), add:

{
  "mcpServers": {
    "textfocus": {
      "type": "sse",
      "url": "https://textfocus.onrender.com/sse",
      "headers": {
        "X-API-Key": "Your API key"
      }
    }
  }
}

Cursor, Windsurf, and other MCP-compatible IDEs

These publishers support remote MCP servers via SSE. In their MCP settings, enter:

Tools available via MCP

Once logged in, the AI has access to the following tools:

Each tool call consumes one credit, just like a standard API call.

tf_account API

Description : Returns information about the account associated with the API key: profile, plan, AppSumo codes, remaining credits, and credits used over the past 30 days.

Endpoint : https://www.textfocus.net/apis/tf_account/

Method : POST

Parameters :

This endpoint does not use any credits.

Plowed fields

tf_endpoints API

Description : Lists all available endpoints along with their parameters, descriptions, and credit costs.

Endpoint : https://www.textfocus.net/apis/tf_endpoints/

Method : POST

Parameters :

This endpoint does not use any credits.

List of available language codes

Description : Provides a list of available languages. The returned identifiers (the id field) correspond to language+market codes that can be used directly in the lang parameter of all other APIs (e.g., fr-CA resolves to the ID for the French-speaking Canadian market).

Endpoint : https://www.textfocus.net/apis/tf_langs/

Method : POST

Parameters :

1. API tf_keyword

Description : Provides data on a given keyword (search volume, cost per click, etc.).

Endpoint : https://www.textfocus.net/apis/tf_keyword/

Method : POST

Parameters :

Answer

Example of a JSON response :

{
    "version": "1.0.3",
    "params": {
        "lang": "fr",
        "keyword": ["agence en référencement", "agence seo"],
        "key": "Your API key"
    },
    "result": {
        "agence en référencement": {
            "id": "agence en référencement",
            "lang": "fr",
            "cost": 13.06,
            "concurrency": 6.00,
            "volume": 27100,
            "difficulty": 87
        },
        {
            "id": "agence seo",
            "lang": "fr",
            "cost": 4.14,
            "concurrency": 28.00,
            "volume": 27100,
            "difficulty": 87
        }
    },
    "response": 200,
    "message": "ok",
    "timing": 0.020776,
    "creditUsed": 1,
    "method": "tf_keyword",
    "credits": 294
}

2. API tf_related

Description : Provides terms related to a given keyword.

Endpoint : https://www.textfocus.net/apis/tf_related/

Method : POST

Answer

Example of a JSON response :

{
    "version": "1.0.3",
    "params": {
        "lang": "fr",
        "keyword": "agence seo",
        "key": "Your API key"
    },
    "result": {
        "semantic": {
            "0": { 
                "id" : "agence seo",
                "keyword" : "meilleure agence seo",
                "lang" : "fr",
                "type" : "match",
                "ngram" : "3",
                "cost" : "0.00",
                "concurrency" : "2",
                "volume" : "22200",
                "intent" : "navigational",
                "difficulty" : "19"
		},
			"1": { 
                "id" : "agence seo",
                "keyword" : "agence seo lyon",
                "lang" : "fr",
                "type" : "match",
                "ngram" : "3",
                "cost" : "6.11",
                "concurrency" : "18",
                "volume" : "1600",
                "intent" : "commercial",
                "difficulty" : "56"
		},
		// Up to 100 terms can be returned    },
    "response": 200,
    "message": "ok",
    "timing": 0.3334009999999999,
    "creditUsed": 1,
    "method": "tf_related",
    "credits": 2947
}

3. API tf_seo

Description : Performs a complete SEO analysis of a web page.

Endpoint : https://www.textfocus.net/apis/tf_seo/

Method : POST

Answer

Example of a JSON response :

{
    "version": "1.0.3",
    "params": {
        "lang": "fr",
        "keyword": "agence seo",
        "url": "https://beweb.fr/seo/",
        "key": "Your API key"
    },
    "result": {
    
    "packId": "14",
    "nbCompeteMax": "50",
    "url": "https://beweb.fr/seo/",
    "urlDecode": "https://beweb.fr/seo/",
    "nbH1": 1,
    "entitiesNotSupported": false,
    "typePage": "page",
    "jsonLdType": "WebPage",
    "firstWords": "vous cherchez [...] et une longue",
    "footerTxt": "On nous demande [...]",
    "host": "https://beweb.fr",
    "urlWords": " beweb  seo ",
    "contentBrut": "Skip to content . AGENCE SEO . Pilotez votre référencement naturel. [...].",
    "nbLinksOut": 16,
    "nbLinksOutExt": 5,
    "canon": "https://beweb.fr/seo/",
    "title": "Agence SEO France - Référencement Naturel Google | BEWEB",
    "description": "Besoin d'une agence SEO pour améliorer votre visibilité en ligne ? [...].",
    "robots": "index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1",
    "h1": "AGENCE SEO Pilotez votre référencement naturel",
    "h2": [
      "Les services de notre agence SEO Nos solutions pour développer votre référencement naturel",
      "Besoin d'une agence SEO ? Contactez nos consultants dès maintenant"
    ],
    "h3": [
      "Audit SEO Trouver les freins au référencement",
      "Recherche de mots clés Les bons mots pour être visible",
      "Accompagnement SEO Etre accompagné sur la durée",
      "Rédaction des balises Optimisation des balises SEO",
      "Refonte SEO Guide / cahier des charges SEO",
      "SEO Rennes Référencement en région rennaise",
      "Voici quelques avis de nos clients",
      "Ils font confiance à nos experts SEO",
      "Profitez de l'expérience d'une agence SEO Pour augmenter votre trafic naturel et vos conversions",
      "Référencement naturel de qualité Avec une agence proche de vous",
      "Améliorez la visibilité de vos sites dès maintenant !",
      "Nos dernières publications sur le SEO",
      "Stratégie SEO : les 14 méthodes de travail que nous utilisons le plus en 2024",
      "Stratégie SEO : les 14 méthodes de travail que nous utilisons le plus en 2024",
      "Utiliser Looker Studio pour analyser les performances de vos pages",
      "Utiliser Looker Studio pour analyser les performances de vos pages",
      "Quand faire un audit seo ?",
      "Quand faire un audit seo ?",
      "Pourquoi utiliser les services de notre agence SEO ?"
    ],
    "hn": [
      {
        "level": "1",
        "tag": "h1",
        "hn": " AGENCE SEO Pilotez votre référencement naturel"
      },
      {
        "level": "2",
        "tag": "h2",
        "hn": " Les services de notre agence SEO Nos solutions pour développer votre référencement naturel"
      },
      {
        "level": "3",
        "tag": "h3",
        "hn": "Audit SEOTrouver les freins au référencement"
      },
      {
        "level": "3",
        "tag": "h3",
        "hn": "Recherche de mots clés Les bons mots pour être visible"
      },
      {
        "level": "3",
        "tag": "h3",
        "hn": "Accompagnement SEO Etre accompagné sur la durée"
      },
      {
        "level": "3",
        "tag": "h3",
        "hn": "Rédaction des balises Optimisation des balises SEO"
      },
      {
        "level": "3",
        "tag": "h3",
        "hn": "Refonte SEO Guide / cahier des charges SEO"
      },
      {
        "level": "3",
        "tag": "h3",
        "hn": "Référencement en région rennaise"
      },
      {
        "level": "3",
        "tag": "h3",
        "hn": " Voici quelques avis de nos clients "
      },
      {
        "level": "3",
        "tag": "h3",
        "hn": " Ils font confiance à nos experts SEO "
      },
      {
        "level": "3",
        "tag": "h3",
        "hn": " Profitez de l'expérience d'une agence SEO Pour augmenter votre trafic naturel et vos conversions"
      },
      {
        "level": "3",
        "tag": "h3",
        "hn": " Référencement naturel de qualité Avec une agence proche de vous"
      },
      {
        "level": "3",
        "tag": "h3",
        "hn": " Améliorez la visibilité de vos sites dès maintenant ! "
      },
      {
        "level": "4",
        "tag": "h4",
        "hn": "Privacy Overview"
      }
    ],
    "anchors": [
      {
        "anchor": "consultant seo",
        "link": "https://beweb.fr/",
        "rel": "",
        "title": "Consultant SEO"
      },
      {
        "anchor": "services seo",
        "link": "https://beweb.fr/seo/",
        "rel": "",
        "title": "Services SEO"
      },
      {
        "anchor": "services web",
        "link": "https://beweb.fr/web/",
        "rel": "",
        "title": "Services Web"
      },
      {
        "anchor": "plan du site",
        "link": "https://beweb.fr/plan-du-site/",
        "rel": "",
        "title": ""
      },
      {
        "anchor": "contactez-nous",
        "link": "/contact/",
        "rel": "",
        "title": ""
      },
      {
        "anchor": "",
        "link": "#li-page-top",
        "rel": "",
        "title": ""
      },
      {
        "anchor": "",
        "link": "https://www.cookieyes.com/",
        "rel": "",
        "title": ""
      }
    ],
    "images": {
      "https://beweb.fr/wp-content/uploads/2020/09/beweb-logo-60.png": {
        "alt": "Consultant SEO : Expert référencement de site internet à Rennes",
        "title": "",
        "width": "",
        "height": ""
      },
      "https://beweb.fr/wp-content/uploads/2020/11/3249202edit.png": {
        "alt": "agence seo",
        "title": "",
        "width": "900",
        "height": "574"
      },
      "https://beweb.fr/wp-content/uploads/2020/11/ubiqus-logo.png": {
        "alt": "ubiqus logo",
        "title": "",
        "width": "261",
        "height": "100"
      },
      "https://beweb.fr/wp-content/uploads/2020/11/idaos-logo.png": {
        "alt": "idaos logo",
        "title": "",
        "width": "226",
        "height": "100"
      },
      "https://beweb.fr/wp-content/uploads/2016/07/orange_obs.jpg": {
        "alt": "",
        "title": "",
        "width": "194",
        "height": "100"
      },
      "https://beweb.fr/wp-content/uploads/2016/07/lylo_2015.png": {
        "alt": "",
        "title": "",
        "width": "121",
        "height": "100"
      },
      "https://beweb.fr/wp-content/uploads/2016/07/Creative-Ingenierie-logo_165X165.jpg": {
        "alt": "",
        "title": "",
        "width": "206",
        "height": "100"
      },
      "https://beweb.fr/wp-content/uploads/2020/11/augmentez-votre-trafic-naturel.png": {
        "alt": "Augmentez votre trafic naturel",
        "title": "",
        "width": "801",
        "height": "555"
      },
      "https://beweb.fr/wp-content/uploads/2020/11/3339159small.png": {
        "alt": "3339159small",
        "title": "",
        "width": "506",
        "height": "555"
      },
      "https://beweb.fr/wp-content/uploads/2023/01/strategie-seo-300x300.jpg": {
        "alt": "strategie seo",
        "title": "",
        "width": "",
        "height": ""
      },
      "https://beweb.fr/wp-content/uploads/2020/11/3497813-300x300.jpg": {
        "alt": "Utiliser Google Data Studio pour analyser les performances de vos pages",
        "title": "",
        "width": "",
        "height": ""
      },
      "https://beweb.fr/wp-content/uploads/2020/08/seo-793030_1280-300x199.jpg": {
        "alt": "Quand faire un audit seo",
        "title": "",
        "width": "",
        "height": ""
      },
      "https://beweb.fr/wp-content/plugins/cookie-law-info/legacy/public/images/logo-cookieyes.svg": {
        "alt": "CookieYes Logo",
        "title": "",
        "width": "",
        "height": ""
      }
    },
    "strong": [
      "agence en référencement",
      "stratégie de référencement",
      "expertise référencement naturel",
      "bons mots clés",
      "bonnes pratiques de Google",
      "mobile first",
      "Sites internet gérés, créés ou optimisés",
      "Sessions mensuelles cumulées sur nos sites",
      "Mots clés surveillés",
      "optimisation pour les moteurs de recherche",
      "stratégie de référencement sur mesure",
      "expérience",
      "savoir-faire",
      "équipe passionnée",
      "stratégies innovantes",
      "chaque entreprise est unique",
      "simple et accessible",
      "sur le long terme",
      "durables et évolutives,",
      "résultats qui durent"
    ],
    "em": "Jean-Joseph Lattuada, Ouest-France",
    "nbWords": 762,
    "nbWordsAll": 1414,
    "ratio": 6.91,
    "pertinence": 54,
    "nbWordsDistinct": 427,
    "beginWith": {
      "référencement": 19,
      "agence": 12,
      "seo": 8,
      "naturel": 5,
      "solutions": 5,
      "cookies": 5,
      "beweb": 5,
      "web": 5,
      "visibilité": 5,
      "optimisation": 4,
      "analyse": 4,
      "google": 4
    },
    "langs": {
      "country": "FR",
      "langOfPage": "fr",
      "headers-content-type": "text/html",
      "meta-charset": "utf-8",
      "headers-content-language": "non renseigné",
      "meta-content-language": "non renseigné",
      "meta-name-language": "non renseigné",
      "html-lang": "fr-FR"
    },
    "nbPhrases": 49,
    "nbPhrasesAll": 111,
    "entities": [
      {
        "id": 0,
        "type": [
          "Number"
        ],
        "matchingTokens": [
          2
        ],
        "entityId": "78",
        "confidenceScore": 0.5,
        "wikiLink": "",
        "matchedText": "78",
        "relevanceScore": 0,
        "entityEnglishId": "",
        "startingPos": 5,
        "endingPos": 7,
        "unit": "Number"
      },
      {
        "id": 1,
        "type": [
          "Number"
        ],
        "matchingTokens": [
          1
        ],
        "entityId": "6",
        "confidenceScore": 0.5,
        "wikiLink": "",
        "matchedText": "06",
        "relevanceScore": 0,
        "entityEnglishId": "",
        "startingPos": 2,
        "endingPos": 4,
        "unit": "Number"
      },
      {
        "id": 2,
        "matchingTokens": [
          792
        ],
        "entityId": "Algorithme",
        "freebaseTypes": [
          "/award/award_discipline",
          "/education/field_of_study",
          "/symbols/namesake",
          "/book/book_subject"
        ],
        "confidenceScore": 5.629,
        "wikiLink": "http://fr.wikipedia.org/wiki/Algorithme",
        "matchedText": "algorithmes",
        "freebaseId": "/m/0jpv",
        "relevanceScore": 0.2498,
        "entityEnglishId": "Algorithm",
        "startingPos": 5522,
        "endingPos": 5533,
        "wikidataId": "Q8366"
      },
      {
        "id": 3,
        "matchingTokens": [
          808
        ],
        "entityId": "Privacy",
        "freebaseTypes": [
          "/media_common/quotation_subject",
          "/film/film_subject",
          "/law/legal_subject",
          "/book/book_subject"
        ],
        "confidenceScore": 5.349,
        "wikiLink": "http://en.wikipedia.org/wiki/Privacy",
        "matchedText": "privacy",
        "freebaseId": "/m/06804",
        "relevanceScore": 0,
        "entityEnglishId": "Privacy",
        "startingPos": 5633,
        "endingPos": 5640,
        "wikidataId": "Q188728"
      },
      {
        "id": 4,
        "matchingTokens": [
          812
        ],
        "entityId": "Website",
        "freebaseTypes": [
          "/book/book_subject",
          "/business/industry",
          "/award/award_category",
          "/dataworld/information_source",
          "/fictional_universe/fictional_organization_type",
          "/organization/non_profit_organization",
          "/location/location",
          "/internet/website_category",
          "/award/award_discipline",
          "/organization/contact_category",
          "/business/business_location",
          "/education/school_category",
          "/organization/role",
          "/business/employer",
          "/organization/organization_sector"
        ],
        "confidenceScore": 10.45,
        "wikiLink": "http://en.wikipedia.org/wiki/Website",
        "matchedText": "website",
        "freebaseId": "/m/085n4",
        "relevanceScore": 0,
        "entityEnglishId": "Website",
        "startingPos": 5656,
        "endingPos": 5663,
        "wikidataId": "Q35127"
      },
      {
        "id": 5,
        "matchingTokens": [
          814
        ],
        "entityId": "Cookie (informatique)",
        "freebaseTypes": [
          "/book/book_subject"
        ],
        "confidenceScore": 3.079,
        "wikiLink": "http://fr.wikipedia.org/wiki/Cookie_(informatique)",
        "matchedText": "cookies",
        "freebaseId": "/m/0d18sk",
        "relevanceScore": 0.3457,
        "entityEnglishId": "HTTP cookie",
        "startingPos": 5669,
        "endingPos": 5676,
        "wikidataId": "Q178995"
      },
      {
        "id": 6,
        "matchingTokens": [
          892,
          893
        ],
        "entityId": "Option de retrait dans l'Union européenne",
        "confidenceScore": 1.016,
        "wikiLink": "http://fr.wikipedia.org/wiki/Option_de_retrait_dans_l'Union_européenne",
        "matchedText": "opt out",
        "freebaseId": "/m/03cfnlw",
        "relevanceScore": 0.1998,
        "entityEnglishId": "Opt-outs in the European Union",
        "startingPos": 6098,
        "endingPos": 6105,
        "wikidataId": "Q1349687"
      },
      {
        "id": 7,
        "matchingTokens": [
          899,
          900
        ],
        "entityId": "Opt-out (marketing)",
        "confidenceScore": 1.776,
        "wikiLink": "http://fr.wikipedia.org/wiki/Opt-out_(marketing)",
        "matchedText": "opting out",
        "freebaseId": "",
        "relevanceScore": 0.06177,
        "entityEnglishId": "Opt-out",
        "startingPos": 6128,
        "endingPos": 6138,
        "wikidataId": "Q1368455"
      },
      {
        "id": 8,
        "matchingTokens": [
          907
        ],
        "entityId": "Affect",
        "confidenceScore": 0.9559,
        "wikiLink": "http://fr.wikipedia.org/wiki/Affect",
        "matchedText": "affect",
        "freebaseId": "/m/09f7n8",
        "relevanceScore": 0.1276,
        "entityEnglishId": "Affect (psychology)",
        "startingPos": 6168,
        "endingPos": 6174,
        "wikidataId": "Q159904",
        "wikidataTypes": [
          "Q96634632/psychology term",
          "Q12812139/technical term"
        ]
      },
      {
        "id": 9,
        "matchingTokens": [
          928
        ],
        "entityId": "Analytics",
        "freebaseTypes": [
          "/organization/organization_sector",
          "/business/competitive_space",
          "/computer/software_genre",
          "/internet/website_category",
          "/book/book_subject",
          "/business/industry",
          "/media_common/quotation_subject"
        ],
        "confidenceScore": 2.001,
        "wikiLink": "http://en.wikipedia.org/wiki/Analytics",
        "matchedText": "analytics",
        "freebaseId": "/m/02gcn9",
        "relevanceScore": 0,
        "entityEnglishId": "Analytics",
        "startingPos": 6296,
        "endingPos": 6305,
        "wikidataId": "Q485396",
        "wikidataTypes": [
          "Q105948247/knowledge system",
          "Q1047113/specialty",
          "Q2198779/unit",
          "Q4671286/academic major",
          "Q26256810/matter",
          "Q11953984/linguistic unit",
          "Q11862829/academic discipline",
          "Q110403031/knowledge type",
          "Q115786086/linguistic form",
          "Q115372263/word or phrase",
          "Q1128340/subject heading"
        ]
      }
    ],
    "opengraph": {
      "og:locale": "fr_FR",
      "og:type": "article",
      "og:title": "Agence SEO France - Référencement Naturel Google | BEWEB",
      "og:description": "Besoin d",
      "og:url": "https://beweb.fr/seo/",
      "og:site_name": "Consultant SEO : Expert référencement de site internet à Rennes"
    },
    "twitter": [],
    "robotsTxtInfo": {
      "code": 200,
      "response": {},
      "content": "User-agent: *\r\nDisallow:\r\n\r\n#test o2"
    },
    "nbImg": 13,
    "nbImgNoAlt": 3,
    "firstPerson": {
      "notre": 10,
      "nos": 13,
      "nous": 31,
      "mes": 1,
      "me": 1,
      "je": 2,
      "ma": 1
    },
    "mykeyword": "",
    "verif_presence": 1,
    "words": {
      "agence": 18,
      "référencement": 27,
      "naturel": 9,
      "référencement naturel": 5,
      "google": 9,
      "beweb": 6,
      "france": 1,
      "besoin": 6,
      "solutions": 6,
      "accompagnement": 5,
      "rédaction": 4,
      "améliorer": 5,
      "visibilité": 7,
      "mesure": 3,
      "optimisation": 7,
      "audit": 7,
      "bonne": 3,
      "développer": 2,
      "optimisé": 2,
      "cherchez": 2,
      "croissance": 2,
      "saura": 1,
      "proposons": 2,
      "contact": 1,
      "contactez": 1,
      "rigueur": 1,
      "choisir": 1,
      "sérieux": 1,
      "confiez": 1,
      "large": 1,
      "laissons": 1,
      "proposé": 1,
      "panel": 1,
      "adaptées": 1,
      "temps": 1,
      "outils": 1,
      "tracking": 1,
      "paramétrage": 1,
      "longue": 1,
      "manager": 1,
      "contenu": 2,
      "client": 8,
      "stratégie": 8,
      "technique": 6,
      "recherche": 6,
      "analyse": 6,
      "experience": 6,
      "cookies": 6,
      "balises": 5,
      "travail": 5,
      "objectif": 4,
      "sites": 4,
      "place": 4,
      "these": 4,
      "performance": 4,
      "résultats": 4,
      "website": 4,
      "comprendre": 4,
      "aider": 4
    },
    "optimise": {
      "agence": 51,
      "référencement": 50,
      "naturel": 39,
      "google": 28,
      "beweb": 28,
      "france": 23,
      "besoin": 12,
      "solutions": 11,
      "audit": 7,
      "visibilité": 7
    },
    "wordsOptimiseFor": {
      "agence": 51,
      "référencement": 50,
      "naturel": 39,
      "google": 28,
      "beweb": 28,
      "france": 23,
      "besoin": 12,
      "solutions": 11,
      "audit": 7,
      "visibilité": 7,
      "améliorer": 7,
      "mesure": 7,
      "rédaction": 7,
      "optimisation": 7,
      "accompagnement": 7
    },
    "groupOptimiseFor": {
      "agence": 51,
      "référencement": 50,
      "naturel": 39,
      "google": 28,
      "beweb": 28,
      "france": 23,
      "besoin": 12,
      "solutions": 11,
      "audit": 7,
      "visibilité": 7,
      "améliorer": 7,
      "mesure": 7,
      "rédaction": 7,
      "optimisation": 7,
      "accompagnement": 7
    },
    "lexies": {
      "proposons": {
        "4": "proposition",
        "22": "viser",
        "24": "mesure",
        "26": "objectif",
        "33": "agence",
        "35": "contenu",
        "43": "sites",
        "47": "services",
        "53": "concurrence",
        "83": "option",
        "164": "projet",
        "197": "atteindre",
        "201": "client",
        "211": "découvrir",
        "214": "devis",
        "228": "gratuit",
        "277": "accompagnement"
      },
      "référencement": [
        "recherche",
        "optimisation",
        "visibilité",
        "contenu",
        "internet",
        "visible",
        "complexe",
        "optimisé"
      ],
      "solutions": [
        "optimisation",
        "analyse",
        "efficace",
        "simple",
        "optimiser",
        "amélioration",
        "performance",
        "référencement",
        "stratégie",
        "processus",
        "adaptées"
      ],
      "agence": {
        "14": "entreprise",
        "16": "client",
        "32": "objectif",
        "37": "secteur"
      },
      "naturel": {
        "38": "simple",
        "126": "migration",
        "187": "recherche",
        "195": "force"
      },
      "besoin": [
        "amélioration",
        "objectif",
        "qualité",
        "utile",
        "entreprise",
        "client",
        "disponible",
        "projet",
        "bonne",
        "adaptées"
      ],
      "développer": {
        "0": "croissance",
        "1": "secteur",
        "2": "trafic",
        "3": "processus",
        "4": "entreprise",
        "6": "améliorer"
      },
      "mesure": [
        "temps",
        "point",
        "secteur",
        "stade",
        "ligne",
        "force",
        "commun",
        "durée",
        "travail",
        "processus",
        "terme",
        "nouveau",
        "ensemble",
        "photographe",
        "studio",
        "performance",
        "ordinaire",
        "longue"
      ],
      "outils": {
        "8": "analyse",
        "75": "optimisation",
        "77": "ergonomie",
        "98": "guide",
        "111": "simple"
      },
      "confiez": {
        "7": "laisser",
        "8": "confiance",
        "24": "découvrir",
        "34": "choisir",
        "99": "enregistrer"
      },
      "rédaction": {
        "13": "projet",
        "14": "quotidien",
        "17": "cahier"
      },
      "contact": {
        "11": "direct"
      },
      "contactez": {
        "20": "aider",
        "54": "découvrir",
        "118": "proposer",
        "126": "rendre",
        "127": "répondre",
        "134": "savoir"
      },
      "sérieux": {
        "41": "confiance",
        "55": "gratuit"
      },
      "saura": {
        "51": "montre",
        "59": "commun",
        "64": "découvrir",
        "167": "disponibilité",
        "193": "force",
        "272": "point",
        "279": "processus"
      },
      "laissons": {
        "50": "cours",
        "69": "mettre",
        "88": "rendre",
        "97": "découvrir",
        "114": "maîtriser",
        "188": "place",
        "265": "aimons",
        "271": "appliquer"
      }
    },
    "listLexies": {
      "agence": {
        "ponderation": 51,
        "color": "264653"
      },
      "référencement": {
        "ponderation": 74,
        "color": "287271"
      },
      "naturel": {
        "ponderation": 39,
        "color": "2A9D8F"
      },
      "besoin": {
        "ponderation": 23,
        "color": "8AB17D"
      },
      "solutions": {
        "ponderation": 73,
        "color": "E9C46A"
      },
      "mesure": {
        "ponderation": 17,
        "color": "EFB366"
      },
      "rédaction": {
        "ponderation": 7,
        "color": "F4A261"
      },
      "développer": {
        "ponderation": 18,
        "color": "EE8959"
      },
      "contact": {
        "ponderation": 5,
        "color": "E76F51"
      },
      "contactez": {
        "ponderation": 5,
        "color": "E97C61"
      },
      "proposons": {
        "ponderation": 75,
        "color": "f45b5b"
      },
      "sérieux": {
        "ponderation": 5,
        "color": "e4d354"
      },
      "confiez": {
        "ponderation": 10,
        "color": "413775"
      },
      "saura": {
        "ponderation": 5,
        "color": "e91e63"
      },
      "laissons": {
        "ponderation": 5,
        "color": "9c27b0"
      },
      "outils": {
        "ponderation": 12,
        "color": "90ed7d"
      }
    },
    "lexiesOptimiseFor": {
      "proposons": 75,
      "référencement": 74,
      "solutions": 73,
      "agence": 51,
      "naturel": 39,
      "besoin": 23,
      "développer": 18,
      "mesure": 17,
      "outils": 12
    },
    "listPresence": {
      "title": {
        "référencement naturel": 1,
        "référencement": 1,
        "agence": 1,
        "google": 1,
        "naturel": 1,
        "beweb": 1,
        "france": 1
      },
      "h1": {
        "référencement naturel": 1,
        "référencement": 1,
        "agence": 1,
        "naturel": 1
      },
      "h2": {
        "référencement naturel": 1,
        "référencement": 1,
        "agence": 1,
        "naturel": 1,
        "solutions": 1,
        "services": 1,
        "développer": 1,
        "besoin": 1,
        "consultants": 1,
        "contact": 1,
        "contactez": 1
      },
      "strong": {
        "référencement naturel": 1,
        "référencement": 1,
        "agence": 1,
        "stratégie": 1,
        "naturel": 1,
        "google": 1,
        "pratiques": 1,
        "bonne": 1,
        "mobile": 1,
        "first": 1
      },
      "description": {
        "agence": 1,
        "stratégie": 1,
        "visibilité": 1,
        "besoin": 1,
        "améliorer": 1,
        "mesure": 1,
        "ligne": 1
      },
      "h3": {
        "référencement": 1,
        "audit": 1,
        "trouver": 1,
        "freins": 1,
        "recherche": 1,
        "visible": 1,
        "accompagnement": 1,
        "accompagné": 1,
        "durée": 1,
        "optimisation": 1,
        "balises": 1,
        "rédaction": 1,
        "charges": 1,
        "refonte": 1,
        "cahier": 1,
        "guide": 1,
        "rennes": 1,
        "région": 1,
        "rennaise": 1
      },
      "host": {
        "beweb": 1
      },
      "url": {
        "beweb": 1
      },
      "firstWords": {
        "référencement": 1,
        "agence": 1,
        "google": 1,
        "visibilité": 1,
        "audit": 1,
        "optimisation": 1,
        "besoin": 1,
        "beweb": 1,
        "solutions": 1,
        "accompagnement": 1,
        "améliorer": 1,
        "place": 1,
        "rédaction": 1,
        "bonne": 1,
        "mesure": 1,
        "proposer": 1,
        "concrètes": 1,
        "trafic": 1,
        "internet": 1,
        "cherchez": 1,
        "optimisé": 1,
        "contenu": 1,
        "hasard": 1,
        "proposons": 1,
        "croissance": 1,
        "rigueur": 1,
        "choisir": 1,
        "sérieux": 1,
        "confiez": 1,
        "saura": 1,
        "large": 1,
        "laissons": 1,
        "panel": 1,
        "adaptées": 1,
        "temps": 1,
        "outils": 1,
        "tracking": 1,
        "paramétrage": 1,
        "manager": 1,
        "proposé": 1,
        "longue": 1
      },
      "footerTxt": {
        "agence": 1,
        "besoin": 1,
        "beweb": 1,
        "experts": 1,
        "répondre": 1,
        "rennes": 1,
        "christophe": 1,
        "consultants": 1,
        "services": 1,
        "contact": 1,
        "contactez": 1,
        "répond": 1
      },
      "em": {
        "ouest": 1,
        "france": 1,
        "lattuada": 1,
        "joseph": 1
      }
    },
    "scoreSeo": 96.5,
    "hnInFooter": []
    },
    "response": 200,
    "message": "ok",
    "timing": 0.3334009999999999,
    "creditUsed": 1,
    "method": "tf_related",
    "credits": 2947
}

4. API tf_semantic

Description : Provides semantic analysis and semantic vocabulary.

Endpoint : https://www.textfocus.net/apis/tf_semantic/

Method : POST

Answer

Example of a JSON response :

{
    "version": "1.0.3",
    "params": {
        "lang": "fr",
        "keyword": "mini serre",
        "key": "Your API key"
    },
    "result": {
        
        "nbCompete": 34,
    "nbFound": 119,
    "nbWordsContentMoy": 904.6470588235294,
    "nbWordsTitleMoy": 6.0588235294117645,
    "semantic": {
      "0": {
        "id": "mini serre",
        "keyword": "semis",
        "kei": "100.00",
        "ngram": "1",
        "used": "82.35",
        "occ": "105",
        "omin": "1",
        "omax": "36",
        "omoy": "7.5",
        "osd": "8.1",
        "nbwmoy": "555",
        "intitle": "14.71",
        "inhn": "26.47",
        "frequency": "22.85",
        "tfidf": "0.0613",
        "context": "a:3:{i:0;s:16:\"mini serre semis\";i:1;s:21:\"fleurs légumes semis\";i:2;s:16:\"serre semis pots\";}"
      },
      "1": {
        "id": "mini serre",
        "keyword": "plantes",
        "kei": "99.11",
        "ngram": "1",
        "used": "73.53",
        "occ": "97",
        "omin": "1",
        "omax": "44",
        "omoy": "7.8",
        "osd": "11.1",
        "nbwmoy": "606",
        "intitle": "0.00",
        "inhn": "14.71",
        "frequency": "16.74",
        "tfidf": "0.0573",
        "context": "a:3:{i:0;s:23:\"plantes fleurs légumes\";i:1;s:23:\"serre hivernage plantes\";i:2;s:24:\"hivernage plantes fleurs\";}"
      },
      "2": {
        "id": "mini serre",
        "keyword": "jardin",
        "kei": "98.01",
        "ngram": "1",
        "used": "79.41",
        "occ": "140",
        "omin": "1",
        "omax": "54",
        "omoy": "12.0",
        "osd": "11.9",
        "nbwmoy": "605",
        "intitle": "20.59",
        "inhn": "38.24",
        "frequency": "30.33",
        "tfidf": "0.0694",
        "context": "a:3:{i:0;s:17:\"mini serre jardin\";i:1;s:19:\"petite serre jardin\";i:2;s:26:\"serre jardin polycarbonate\";}"
      },
      "3": {
        "id": "mini serre",
        "keyword": "culture",
        "kei": "95.93",
        "ngram": "1",
        "used": "76.47",
        "occ": 83,
        "omin": "1",
        "omax": "23",
        "omoy": "5.5",
        "osd": "5.2",
        "nbwmoy": "589",
        "intitle": "14.71",
        "inhn": "29.41",
        "frequency": "19.50",
        "tfidf": "0.0492",
        "context": "a:3:{i:0;s:18:\"mini serre culture\";i:1;s:23:\"serre culture plastique\";i:2;s:13:\"serre culture\";}"
      },
      "4": {
        "id": "mini serre",
        "keyword": "balcon",
        "kei": "77.62",
        "ngram": "1",
        "used": "47.06",
        "occ": "24",
        "omin": "1",
        "omax": "6",
        "omoy": "2.6",
        "osd": "1.6",
        "nbwmoy": "595",
        "intitle": "0.00",
        "inhn": "8.82",
        "frequency": "4.29",
        "tfidf": "0.0324",
        "context": "a:3:{i:0;s:15:\"balcon terrasse\";i:1;s:13:\"serres balcon\";i:2;s:12:\"serre balcon\";}"
      },
		// Up to 100 terms can be returned      
    }
        
        
    },
    "response": 200,
    "message": "ok",
    "timing": 0.020776,
    "creditUsed": 1,
    "method": "tf_keyword",
    "credits": 2948
}

5. API tf_robotstxt

Description : Analyze a domain's robots.txt file: presence of an XML sitemap, blocked AI bots, content signals.

Endpoint : https://www.textfocus.net/apis/tf_robotstxt/

Method : POST

Answer

Example of a JSON response :

{
    "version": "1.0.4",
    "params": {
        "url": "https://beweb.fr/seo/",
        "key": "Your API key"
    },
    "result": {
        "score": 75,
        "issues": [
            "Aucun Content Signal détecté dans le robots.txt"
        ],
        "details": {
            "sitemaps": [
                "https://beweb.fr/sitemap.xml"
            ],
            "blocked_bots": [],
            "content_signals": {}
        }
    },
    "response": 200,
    "message": "ok",
    "timing": 0.312,
    "creditUsed": 1,
    "method": "tf_robotstxt",
    "credits": 293
}

Response fields

6. API tf_geo

Description : Performs a comprehensive GEO (Generative Engine Optimization) analysis of a web page: heading structure, structured data, readability, semantic consistency, performance, accessibility for AI agents, etc. Returns an overall AI-Ready score and scores for each category.

Endpoint : https://www.textfocus.net/apis/tf_geo/

Method : POST

Answer

Example of a JSON response (abridged):

{
    "version": "1.0.4",
    "params": {
        "url": "https://beweb.fr/seo/",
        "key": "Your API key"
    },
    "result": {
        "ia_ready_score": 68.4,
        "geo_commentary": {
            "comment": "Cette page présente une optimisation correcte pour les IA, mais plusieurs points méritent attention.",
            "priority_text": "Les principaux axes d'amélioration sont la table des matières et les données structurées (Schema.org)."
        },
        "all_scores": {
            "structure_score": 80,
            "structured_data_score": 40,
            "segmentation_markup_score": 75,
            "readability_score": 70,
            "semantic_coherence_score": 65,
            "toc_score": 30,
            "concise_answer_score": 60,
            "images_score": 55,
            "loading_score": 85,
            "accessibility_score": 90,
            "robots_txt_score": 75
        },
        "structure_and_accessibility": {
            "structure": {
                "analysis": {
                    "score": 80,
                    "issues": [],
                    "details": {
                        "nb_h1": 1,
                        "nb_h2": 2,
                        "h1_matches_topic": true
                    }
                }
            },
            "structured_data": {
                "analysis": {
                    "score": 40,
                    "issues": ["Aucun type Schema.org pertinent détecté (Article, FAQ, HowTo…)"],
                    "types": ["WebPage"]
                }
            },
            "segmentation_markup": {
                "analysis": {
                    "score": 75,
                    "issues": []
                }
            }
        },
        "content_clarity": {
            "readability": {
                "analysis": {
                    "score": 70,
                    "issues": [],
                    "details": {
                        "flesch_kincaid": 33.7,
                        "avg_sentence_length": 18.4
                    }
                }
            },
            "concise_answer": {
                "analysis": {
                    "score": 60,
                    "issues": ["Aucune réponse concise détectée en début de page"]
                }
            },
            "semantic_coherence": {
                "analysis": {
                    "score": 65,
                    "issues": [],
                    "details": {
                        "title_to_content": 0.82,
                        "description_to_content": 0.74
                    }
                }
            }
        },
        "seo_ia_optimization": {
            "toc": {
                "analysis": {
                    "score": 30,
                    "issues": ["Aucune table des matières cliquable détectée"]
                }
            }
        },
        "multimodality": {
            "alt_tags": {
                "analysis": {
                    "score": 55,
                    "issues": ["3 image(s) sans attribut alt"],
                    "details": {
                        "nb_images": 13,
                        "nb_missing_alt": 3
                    }
                }
            }
        },
        "performance": {
            "fast_loading": {
                "analysis": {
                    "score": 85,
                    "issues": [],
                    "details": {
                        "lcp_ms": 1276,
                        "ttfb_ms": 15,
                        "tti_ms": 199
                    }
                }
            },
            "main_readability_accessibility": {
                "analysis": {
                    "score": 90,
                    "issues": []
                }
            },
            "robots_txt": {
                "analysis": {
                    "score": 75,
                    "issues": ["Aucun Content Signal détecté dans le robots.txt"],
                    "details": {
                        "sitemaps": ["https://beweb.fr/sitemap.xml"],
                        "blocked_bots": [],
                        "content_signals": {}
                    }
                }
            }
        },
        "res": {
            "url": "https://beweb.fr/seo/",
            "urlDecode": "https://beweb.fr/seo/",
            "title": "Agence SEO France - Référencement Naturel Google | BEWEB",
            "description": "Besoin d'une agence SEO pour améliorer votre visibilité en ligne ?",
            "h1": "AGENCE SEO Pilotez votre référencement naturel",
            "h2": ["Les services de notre agence SEO", "Besoin d'une agence SEO ?"],
            "nbWords": 762,
            "host": "https://beweb.fr",
            "whatIsAbout": ["référencement", "agence", "naturel", "google", "seo", "visibilité"]
        },
        "lang": "fr",
        "country": "fr",
        "resume_ia": "Cette page présente l'agence SEO Beweb, spécialisée dans le référencement naturel en France..."
    },
    "response": 200,
    "message": "ok",
    "timing": 4.21,
    "creditUsed": 1,
    "method": "tf_geo",
    "credits": 292
}

Main fields of the response

Note: This API performs an in-depth analysis that can take between 3 and 10 seconds, depending on the page being analyzed.

8. API tf_competition

Description : Competitive analysis for a given keyword: retrieves the top pages in Google search results and calculates their SEO metrics (SEO score, semantic score, word count, relevance, page type). The analysis is comprehensive: pages that have not yet been analyzed are retrieved and calculated on the fly.

Endpoint : https://www.textfocus.net/apis/tf_competition/

Method : POST

Parameters :

Answer

Example of a JSON response :

{
    "version": "1.0.4",
    "params": {
        "lang": "fr",
        "keyword": "agence seo",
        "key": "Your API key"
    },
    "result": {
        "keyword": "agence seo",
        "lang": "fr",
        "nbCompete": 10,
        "competitors": [
            {
                "url": "https://www.optimize360.fr/agence-seo/",
                "position": 1,
                "title": "Agence SEO - Optimize 360",
                "h1": "Agence SEO Optimize 360",
                "nbWords": 312,
                "nbWordsAll": 687,
                "pertinence": 45,
                "scoreSeo": 87.5,
                "scoreSemantic": 62.3,
                "typePage": "page"
            },
            {
                "url": "https://www.primelis.com/agence-seo/",
                "position": 2,
                "title": "Agence SEO - Primelis",
                "h1": "Votre agence SEO",
                "nbWords": 489,
                "nbWordsAll": 1102,
                "pertinence": 44,
                "scoreSeo": 91.0,
                "scoreSemantic": 71.8,
                "typePage": "page"
            }
            // Up to nbCompeteMax competitors, depending on your subscription        ]
    },
    "response": 200,
    "message": "ok",
    "timing": 12.4,
    "creditUsed": 1,
    "method": "tf_competition",
    "credits": 291
}

Response fields

Note: This API may take between 5 and 30 seconds, depending on the number of pages to be analyzed. Pages that have been analyzed recently are served from the cache.

9. API tf_structured_data

Description : Extracts and analyzes JSON-LD (Schema.org) structured data from a web page. Returns the raw JSON-LD blocks, the detected Schema.org types, and a comprehensive analysis of the structured data quality.

Endpoint : https://www.textfocus.net/apis/tf_structured_data/

Method : POST

Answer

Example of a JSON response :

{
    "version": "1.0.4",
    "params": {
        "url": "https://beweb.fr/seo/",
        "key": "Your API key"
    },
    "result": {
        "jsonLd": [
            {
                "@context": "https://schema.org",
                "@type": "Article",
                "name": "Agence SEO Paris",
                "description": "Optimisation SEO pour votre site web"
            }
        ],
        "jsonLdType": ["Article"],
        "analysis": {
            "score": 60,
            "types_found": ["Article"],
            "issues": ["Missing recommended property: author"],
            "recommendations": ["Add author property to Article schema"]
        }
    },
    "response": 200,
    "message": "ok",
    "timing": 1.24,
    "creditUsed": 1,
    "method": "tf_structured_data",
    "credits": 292
}

Response fields

10. API tf_history

Description : Returns the history of SEO analyses for a previously analyzed URL: SEO score, performance score, semantic score, AI score, word count, and the date of each entry.

Endpoint : https://www.textfocus.net/apis/tf_history/

Method : POST

Answer

Example of a JSON response :

{
    "version": "1.0.4",
    "params": {
        "url": "https://beweb.fr/seo/",
        "key": "Your API key"
    },
    "result": {
        "url": "https://beweb.fr/seo/",
        "keyword": "agence seo",
        "session": "a1b2c3d4e5f6",
        "snapshots": [
            {
                "date": "2024-09-01 10:15:00",
                "scoreSeo": 72.5,
                "scorePerf": 65.0,
                "scoreSem": 58.3,
                "scoreIa": 61.0,
                "nbwordsall": 1240
            },
            {
                "date": "2025-01-15 14:30:00",
                "scoreSeo": 78.2,
                "scorePerf": 70.1,
                "scoreSem": 63.5,
                "scoreIa": 67.4,
                "nbwordsall": 1350
            }
        ]
    },
    "response": 200,
    "message": "ok",
    "timing": 0.08,
    "creditUsed": 0,
    "method": "tf_history",
    "credits": 292
}

Response fields

Note: The history is only available if the page has been crawled at least once from your account. The data is sorted in ascending order by date.

11. tf_perf API

Description : Analyzes a page's mobile performance using Google Lighthouse / PageSpeed Insights. Returns the overall performance score and Core Web Vitals: FCP, LCP, TBT, CLS, Speed Index, TTI, and TTFB.

Endpoint : https://www.textfocus.net/apis/tf_perf/

Method : POST

Answer

Example of a JSON response :

{
    "version": "1.0.4",
    "params": {
        "url": "https://beweb.fr/seo/",
        "key": "Your API key"
    },
    "result": {
        "url": "https://beweb.fr/seo/",
        "scorePerf": 72.0,
        "strategy": "MOBILE",
        "metrics": {
            "first-contentful-paint":    { "value": 1820, "score": 75, "unit": "ms" },
            "largest-contentful-paint":  { "value": 3200, "score": 48, "unit": "ms" },
            "total-blocking-time":       { "value": 240,  "score": 62, "unit": "ms" },
            "cumulative-layout-shift":   { "value": 0.04, "score": 90, "unit": ""   },
            "speed-index":               { "value": 2900, "score": 71, "unit": "ms" },
            "interactive":               { "value": 4100, "score": 55, "unit": "ms" },
            "server-response-time":      { "value": 310,  "score": 85, "unit": "ms" }
        }
    },
    "response": 200,
    "message": "ok",
    "timing": 8.4,
    "creditUsed": 1,
    "method": "tf_perf",
    "credits": 291
}

Response fields

Note: Results are cached for 60 minutes. Use force_refetch=1 to force a new scan.

12. API tf_links

Description : Extracts all outbound links from a page: anchor text, resolved URL (relative → absolute), rel attribute, location on the page (main, nav, footer, aside, header, breadcrumb), and type (internal or external).

Endpoint : https://www.textfocus.net/apis/tf_links/

Method : POST

Answer

Example of a JSON response :

{
    "version": "1.0.4",
    "params": {
        "url": "https://beweb.fr/seo/",
        "key": "Your API key"
    },
    "result": {
        "url": "https://beweb.fr/seo/",
        "total": 34,
        "internal": 22,
        "external": 12,
        "links": [
            {
                "url": "https://beweb.fr/audit-seo/",
                "anchor": "audit seo",
                "rel": null,
                "title": null,
                "location": "main",
                "type": "internal"
            },
            {
                "url": "https://www.google.fr/",
                "anchor": "google",
                "rel": "nofollow",
                "title": "Google",
                "location": "footer",
                "type": "external"
            }
        ]
    },
    "response": 200,
    "message": "ok",
    "timing": 1.8,
    "creditUsed": 1,
    "method": "tf_links",
    "credits": 290
}

Response fields

Note: The HTTP status codes for each link are not checked (to avoid dozens of additional requests). Page anchors (#...), mailto: links, and tel: links are excluded.

13. API tf_seo_bulk

Description : Bulk on-page SEO audit: analyzes up to 50 URLs sequentially and sends the consolidated results to a callback URL. Credits are only deducted for pages that are successfully analyzed.

Endpoint : https://www.textfocus.net/apis/tf_seo_bulk/

Method : POST

Immediate response (202)

{
    "response": 202,
    "message": "processing started",
    "urls_count": 5
}

Payload sent to the callback

{
    "response": 200,
    "method": "tf_seo_bulk",
    "processed": 4,
    "errors": 1,
    "skipped": 0,
    "credits_consumed": 4,
    "timing": 38.2,
    "results": [
        {
            "url": "https://example.com/page-1",
            "status": "ok",
            "scoreSeo": 67.3,
            "scoreSem": 52.0,
            "title": "Titre de la page",
            "h1": "Titre H1",
            "description": "Meta description...",
            "nbMots": 842
        },
        {
            "url": "https://example.com/page-unreachable",
            "status": "error",
            "error": "analysis returned no result"
        }
    ]
}

Champs du payload callback

Note: There is a 1-second delay between each URL. For 50 URLs, processing may take several minutes. Make sure your callback endpoint accepts POST requests with a Content-Type: application/json.

7. Handling Asynchronous Responses

Some APIs, such as tf_semantic, may require asynchronous processing.
In this case, a callback can be defined to receive the response on your server.

<?php
	public function my_callback(){
    		log_message('error', 'Call of my_callback');
    		$payload = file_get_contents('php://input');
    		log_message('error', 'Content : '. $payload);
    		print_r($payload);
	}
?>