diff --git a/lib/manager/composer/utils.spec.ts b/lib/manager/composer/utils.spec.ts
index 5553063184f3f3ffc8fc60ddfe0bfcbbd3d73061..ff972e6a9f301bd25970569ec3debe0042f85117 100644
--- a/lib/manager/composer/utils.spec.ts
+++ b/lib/manager/composer/utils.spec.ts
@@ -27,6 +27,18 @@ describe('manager/composer/utils', () => {
       ).toEqual({ composer: '1.1.0' });
     });
 
+    it('returns from composer platform require', () => {
+      expect(
+        extractContraints({ require: { php: '^8.1', composer: '2.2.0' } }, {})
+      ).toEqual({ php: '^8.1', composer: '2.2.0' });
+    });
+
+    it('returns from composer platform require-dev', () => {
+      expect(
+        extractContraints({ 'require-dev': { composer: '^2.2' } }, {})
+      ).toEqual({ composer: '^2.2' });
+    });
+
     it('returns from composer-runtime-api', () => {
       expect(
         extractContraints({ require: { 'composer-runtime-api': '^1.1.0' } }, {})
diff --git a/lib/manager/composer/utils.ts b/lib/manager/composer/utils.ts
index 5b6b3a2c00292d8f9d3593d5668999e0ff7efc83..3841400c03235f7ccacd5db945a20d9607e7fa97 100644
--- a/lib/manager/composer/utils.ts
+++ b/lib/manager/composer/utils.ts
@@ -71,6 +71,12 @@ export function extractContraints(
   } else if (composerJson['require-dev']?.['composer/composer']) {
     res.composer = composerJson['require-dev']?.['composer/composer'];
   }
+  // composer platform package
+  else if (composerJson.require?.['composer']) {
+    res.composer = composerJson.require?.['composer'];
+  } else if (composerJson['require-dev']?.['composer']) {
+    res.composer = composerJson['require-dev']?.['composer'];
+  }
   // check last used composer version
   else if (lockParsed?.['plugin-api-version']) {
     const major = api.getMajor(lockParsed?.['plugin-api-version']);