Trying to get a provider from IBMQ but get 'No provider matches the criteria.'

I have created a circuit and then run the following: provider = IBMQ.get_provider('ibm-q') And this is what I get:

IBMQProviderError                         Traceback (most recent call last)
<ipython-input-24-d651cdcd236d> in <module>
----> 1 provider = IBMQ.get_provider('ibm-q')

~\anaconda3\lib\site-packages\qiskit\providers\ibmq\ibmqfactory.py in get_provider(self, hub, group, project)
352
353         if not providers:
--> 354             raise IBMQProviderError('No provider matches the criteria.')
355         if len(providers) > 1:
356             raise IBMQProviderError('More than one provider matches the criteria.')

IBMQProviderError: 'No provider matches the criteria.'


First try to sign-in into https://quantum-computing.ibm.com/, if not done already. There you will get to see one of IBM's free 15 qubit quantum machines named ibmq_16_melbourne.

If successful, try adding the following snippet:

provider = IBMQ.get_provider('ibm-q')
qcomp = provider.get_backend('ibmq_16_melbourne')
job = execute(circuit, backend=qcomp)
from qiskit.tools.monitor import job_monitor
from qiskit.providers.ibmq.job import job_monitor
job_monitor(job)
result = job.result()


If you want to come up with a histogram, try:

from qiskit.tools.visualization import plot_histogram
plot_histogram(result.get_counts(circuit))


There is no hub simply called ibm-q. I think what you are meaning to do is provider = IBMQ.get_provider(). What you put in the brackets is the name of the hub, for example if your school was a registered hub you might have something to write in there but most users will leave the brackets blank. After this you can do backend = provider.get_backend(BACKEND_NAME) to get the backend you want to use.

• ibm-q hub is actually correct. If you go to your IBMQ dashboard, in the main page, and scroll down to the end you'll see IBMQ.get_provider(hub='ibm-q', group='open', project='main'). See my answer below. Oct 1 '20 at 8:10

Most probably IBMQ.load_account() was missing in your code!
I was able to reproduce the same error message by removing IBMQ.load_account() from my code.

A working example would be something like this:

IBMQ.load_account()

provider = IBMQ.get_provider('ibm-q')
qdevice = provider.get_backend('ibmq_16_melbourne')
job = execute(qc, backend= qdevice)
result = job.result()