diff --git a/lib/workers/branch/automerge.js b/lib/workers/branch/automerge.js
index ab4353134927f93df9bf216a921791354f86be9d..90a1f61d5a965f3ecd8137420832587d90dc52e0 100644
--- a/lib/workers/branch/automerge.js
+++ b/lib/workers/branch/automerge.js
@@ -8,6 +8,10 @@ async function tryBranchAutomerge(config) {
   if (!config.automerge || config.automergeType === 'pr') {
     return 'no automerge';
   }
+  const existingPr = config.api.getBranchPr(config.branchName);
+  if (existingPr) {
+    return 'automerge aborted - PR exists';
+  }
   const branchStatus = await config.api.getBranchStatus(
     config.branchName,
     config.requiredStatusChecks
diff --git a/test/workers/branch/automerge.spec.js b/test/workers/branch/automerge.spec.js
index 114a96f1f6f61613f3f92e29cd305968b5ad5c56..0d3bd5d306627142588edbd0ab216f9a9c05ab1b 100644
--- a/test/workers/branch/automerge.spec.js
+++ b/test/workers/branch/automerge.spec.js
@@ -8,7 +8,11 @@ describe('workers/branch/automerge', () => {
     beforeEach(() => {
       config = {
         ...defaultConfig,
-        api: { getBranchStatus: jest.fn(), mergeBranch: jest.fn() },
+        api: {
+          getBranchPr: jest.fn(),
+          getBranchStatus: jest.fn(),
+          mergeBranch: jest.fn(),
+        },
         logger,
       };
     });
@@ -27,6 +31,15 @@ describe('workers/branch/automerge', () => {
       config.api.getBranchStatus.mockReturnValueOnce('pending');
       expect(await tryBranchAutomerge(config)).toBe('no automerge');
     });
+    it('returns false if PR exists', async () => {
+      config.api.getBranchPr.mockReturnValueOnce({});
+      config.automerge = true;
+      config.automergeType = 'branch-push';
+      config.api.getBranchStatus.mockReturnValueOnce('success');
+      expect(await tryBranchAutomerge(config)).toBe(
+        'automerge aborted - PR exists'
+      );
+    });
     it('returns false if automerge fails', async () => {
       config.automerge = true;
       config.automergeType = 'branch-push';